下面开始委托进阶部分的分享 在此我分3个部分来说明表述 1.带返回值的委托 2.泛型委托 3.委托的异步处理 下面正式进入我们的主题
委托进阶
一、带有返回值的委托
问:委托需要承载哪些信息呢?
通过前面与大家分享的委托帖子中,不难答出,它存储了方法名,还有参数列表(方法签名). 如:
//============================ public delegate void testDelegate(int num); //============================
其实,仔细看看上面语句,就会发现 委托还同时承载了返回的类型,我把上面语句格式化下,相信大家就会明白了
//=================================
public delegate 返回类型 ProcessDelegate(int num);
//=================================
上面委托定义的蓝色部分是声明委托的关键字,红色部分是返回的类型,黑色部分为委
托的类型名,最后小括号中的就是参数部分啦.
因此,要实现该委托就得满足下面2个条件:
1、方法的返回类型和委托的返回类型必须一致; 2、方法的参数也必须跟委托相同,这里是int类型.
OK,就然我们一起尝试下吧!文章来自【狗刨学习网】 代码如下:
using UnityEngine; using System.Collections; public class babyTest : MonoBehaviour { // 定义具有返回值bool的委托 public delegate bool ComparisonEventHandler(int cryid); public int cryid = 0; public GameObject[] objs; // Use this for initialization void Start () { ComparisonEventHandler _Comparison = Comparison01; //new ComparisonEventHandler(new Test().Comparison01); _Comparison(cryid); } ///
运行如下:
当我设置babyid为2的时候,获取返回值为false.
当我设置设置baby为1的时候,获取返回值为true. 二、泛型委托
泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。泛型为.NET框架引入了类型参数(type parameters)的概念。类型参数使得设计类和方法时,不必确定一个或多个具体参数,其的具体参数可延迟到客户代码中声明、实现。这意味着使用泛型的类型参数T,写一个类MyList
泛型的委托,就是参数的类型不确定,例如代码改写为:
using UnityEngine; using System.Collections; public class delegateTest : MonoBehaviour { // 定义具有返回值bool的委托 ,参数采用泛型改写 public delegate bool ComparisonEventHandler