Unity C# 委托——事件,Action,Func的作用和区别

参考视频:

三分钟彻底搞懂委托,事件,Action,Func的作用和区别_哔哩哔哩_bilibili

委托关系图:

 Delegate

定义两个模板,一个可以传参一个不可以传参

模板:1、public delegate void xxxxx(int a)

           2、public delegate void xxxxx()

注册:符合模板的函数便可以用+=来进行添加

存在的风险:Delegate存在着可以被直接赋值的风险,例如delegate1=delegate2,这样会导致容器内的函数存在丢失的风险。

这个时候如果写成事件Event,赋值操作就不会被允许。

 Event

模板:1、public delegate void xxxxx()

           2、public event xxxxx delefate1()

但是这么写比较麻烦,所以封装一下写成Action

Action

模板:1、public Action xxxxx()

        2、public Action<int> xxxxx()

这里我们没有返回值,如果我们希望有返回值那么就可以使用Function

Func

模板:1、public Func<int> xxxxx() return int

        2、public Func<int,bool> xxxxx () return bool

注意:但是若多个返回值发生,则最后保留的是最后注册函数的返回值

猜你喜欢

转载自blog.csdn.net/weixin_46711336/article/details/126176768