精通独立游戏,血型,动漫,指弹吉他,篮球,涂鸦,人体音箱,魔术,塔罗牌,那该多好啊。
主页:www.rainssong.com
微博:www.weibo.com/rainssong
知乎:www.zhihu.com/people/rainssong
流氓百科:www.roguewiki.net

© 下雨的声音 | Powered by LOFTER

C# 委托类型

C#有四种常用委托

Delegate

Action

Func

EventHandler


他们有什么关联和区别?

Delegate是最强大的委托,开发人员可以自定义参数个数,默认值,泛型等等。缺陷就是声明麻烦,而且要专门写一个全局Delegate定义。不然只能在类内部使用,普适性低。

因为声明Delegate很麻烦,所以就产生了另外三个事先声明好的Delegate,目的就是为了简化Delegate。直接看代码最容易理解:

//Action做的简化是,去掉返回值,省略参数定义

public delegate void Action<T1, T2>(T1 arg1, T2 arg2);

//Func和Action差不多,但是有返回

public delegate TResult Func<T, TResult>(T arg1);

//EventHandler这是最接近通用事件的写法,传递了派发者和参数

public delegate void EventHandler(object sender, EventArgs e);


Unity自带的UnityAction和UnityEvent原理差不多,那是为了Unity自身定制的,结合MonoBehavior可以在编辑器里时手动修改事件。优点是方便,缺点效率比普通的要差。

 
评论
热度(5)
 
回到顶部