最近由于项目需要,在学习一个Unity的插件--DOTween,被这种写法给吸引住了transform.DOLocalMove(),为什么可以对一个类再添加一个方法呢?带着疑问google了一下(顺便吐槽下渣度,查的什么鬼啊。。。)终于知道这是C#的拓展外部方法的一种写法。
下面讲讲怎么实现拓展外部方法,我们就以给transform再添加一个方法addTransformMethod为例,直接上代码,首先创建一个类:
TestExtensionMethod.cs 内容如下
using UnityEngine;
using System.Collections;
namespace AddExtensionMethod
{
public static classTestExtensionMethod
{
public static void addTransformMethod(this Transform transform, string str)
{
Debug.Log ("kjvkjfavjhfdjkvhfkjahb" + str);
}
}
}
然后在需要使用的地方添加命名命名空间using AddExtensionMethod;
这样就可以在此文件中通过transform的实例来调用addTransformMethod方法了,就像transform.addTransformMethod ("test");
ps:需要注意一下几点:
1、拓展方法的类(TestExtensionMethod)和方法(addTransformMethod)都必须是static的
2、对哪个类进行方法拓展是通过方法的第一个参数设置的,就像addTransformMethod的第一个参数是this Transform transform就表示这个方法是拓展给Transform这个类的(别漏了this哦)