扩展方法
Posted 无敌小金刚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展方法相关的知识,希望对你有一定的参考价值。
通过扩展方法可以向类型添加功能,而不必创建DriveType或更改原始类型,他们非常适用于需要向类添加功能,但不能编辑类的情况。考虑一下Unity的内置,Transform类,我们无法访问他的源代码。假设我们想要使用函数轻松重置,Transform的位置,旋转和缩放。这个函数的理想位置是放在Transform类中,但由于不能直接向这个类进行添加,并且将这个函数添加到派生类,也没有任何意义。所以我们将为其创建扩展,扩展方法必须放在非泛型静态类中,常见做法是专门创建一个类来包含他们。扩展方法的用法与实例方法类似,他们也声明静态方法。要使函数成为扩展方法,而非静态方法,需要在参数中使用this关键字。在我们的示例中,将创建一个静态类
using UnityEngine; using System.Collections; //创建一个包含所有扩展方法的类 //是很常见的做法。此类必须是静态类。 public static class ExtensionMethods //扩展方法即使像普通方法一样使用, //也必须声明为静态。请注意,第一个 //参数具有“this”关键字,后跟一个 Transform //变量。此变量表示扩展方法会成为 //哪个类的一部分。 public static void ResetTransformation(this Transform trans) trans.position = Vector3.zero; trans.localRotation = Quaternion.identity; trans.localScale = new Vector3(1, 1, 1);
using UnityEngine; using System.Collections; public class SomeClass : MonoBehaviour void Start () //请注意,即使方法声明中 //有一个参数,也不会将任何参数传递给 //此扩展方法。调用此方法的 //Transform 对象会自动作为 //第一个参数传入。 transform.ResetTransformation();
以上是关于扩展方法的主要内容,如果未能解决你的问题,请参考以下文章
GroovyGroovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )
GroovyGroovy 扩展方法 ( Groovy 扩展方法引入 | 分析 Groovy 中 Thread 类的 start 扩展方法 )