c#基础之委托
委托就像是一个引用指针,可以指向相同类型的函数。
通过委托可以把函数像参数一样传递给另一个函数,这样能够减小程序的耦合,能实现回调函数。
例如
class Program { delegate void feeling(); static void smile() { Console.WriteLine("哈哈"); } static void crying() { Console.WriteLine("呜呜呜"); } static void Expression(feeling feeling) { Console.WriteLine("我想要"); feeling(); } static void Main(string[] args) { List<string> ii = new List<string>(); Expression(crying); Expression(smile); } }
可以在委托里使用泛型,例如:
class Program { static int PickOne(int a, int b,MyRule<int> rule) { if (rule(a, b)) return a; else return b; } static bool MySpecialRule(int x,int y) { return true; } delegate bool MyRule<T>(T x, T y); static void Main(string[] args) { var rule = new MyRule<int>(MySpecialRule); rule(0, 9); PickOne(2, 3, MySpecialRule); } }
.net框架提供了两种委托方式 Func和Action,不需要再声明委托,Action不提供返回类型,Func提供返回类型,Action支持16个重载,Func多一个,因为Func最后一个参数需要传递返回值类型