1.什么是委托?(方法作另一个方法的参数) delegate void MyDel(int value); //声明委托类型 和类一样,委托是用户自定义的类型,但是类是数据和方法的集合,而委托是持有一个或多个方法。 delegate可以看做是一个包含有序方法列表的对象,这些方法具有相同的签名和返回类型。 委托保存的方法可以来自任何类或结构 调用列表中的方法可以是实例方法也可以是静态方法 调用委托时,会执行调用列表中的所有方法
2.声明委托类型 delegate void MyDel (int value);委托的是无返回值,且单一int参数的方法 关键字 返回类型 委托类签名 签名
3.创建委托对象 MyDel delVar; 委托类型 变量 delVar = new MyDel(myInstObj.MyM1); 或 delVar = myInstObj.MyM1; delVar = new MyDel(sClass.otherM2); 或 delVar = sClass.otherM2;
4.组合委托 MyDel a = myInstObj.myM1; MyDel b = SClass.OtherM2; MyDel c = a + b;
5.为委托添加方法+= 同理删除方法: -= MyDel delVar = inst.myM1; //创建并初始化 delVar += Scl.m3; delVar += X.Act;
6.调用委托(从底部函数开始执行) MyDel delVar = inst.MyM1; delVar(55);
7.调用带返回值的委托 最后一个方法的返回值就是委托调用返回的值,其他方法的返回值会被忽略
8.调用带引用参数的委托 参数值会根据调用列表中的一个或多个方法的返回值而改变
9.匿名方法 在初始化委托时内联声明的方法 delegate (Parameters) {ImplementationCode} 关键字 参数列表 语句块 delegate int OtherDel(int Inparam); static void Main() { OtherDel del = delegate(int x) { return x + 20; }; }
如果你只是写了一个bai委托去调用du方法,那是看不出区别。 区别在用事件的时zhi候,dao委托一般和事件组合使用,委托不关心方法所在的类,用事件(也是一种特殊的委托)调用方法的时候,是从类内自动触发的执行的,如果用方法直接执行是没办法做到的。
|
请发表评论