delegate:和枚举类似既可以定义在类里面也可以在namespace下。
声明:public delegate int Entrust(int x, int y);
class="code_img_closed" src="/Upload/Images/2016071405/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('309d63f3-bf4c-47cf-8683-27f64245545c',event)" src="/Upload/Images/2016071405/2B1B950FA3DF188F.gif" alt="" />class MyMath { public int add(int x, int y) { return x + y; } public int sub(int x, int y) { return x - y; } }准备
使用:Entrust m =new Entrust(MyMath.add);注:静态方法可以这样用,否则请先创建MyMath的对象
多播委托:m+=MyMath.sub;注:对于有返回值的最好不用多播委托
匿名委托: e += delegate(int x, int y) { return x * y; };
Lambda:e += (x, y) => x / y;注:明天构建
系统预定义的常用泛型委托:
Func委托:有多种重载,delegate TResult Func<T1,T2,T3,T4,TResult>——Func<string,int> f = delegate(string x) { return 1; };注:泛型的最后一个参数为返回值类型
Action委托:相对于Func委托无返回值