泛型委托实际上就是一个.NET Framework预定义的委托,基本涵盖了所有常用的委托,所以一般不用用户重新声明啦。
很简单,看下面简单的小例子:
//void method(); Action test1 = () => { Console.WriteLine("void method();"); }; //void method(x); Action test2 = (x) => { Console.WriteLine("void method(t1)"); }; //void method(x, y); Actiontest3 = (x, y) => { Console.WriteLine("void method(t1, t2)"); }; test1(); test2(1); test3(2, 3);
Action系列泛型委托,是没有返回参数的委托,我简单的举了一个无参数的委托,带一个参数的委托,还有带两个参数的委托。调用的时候和普通的委托没有声明两样。具体的方法我使用的是lambda写的,我前面文章有介绍。是不是很简单,不用自己在写public delegate void VoidDelegate();了。呵呵,简洁明了。
下面是有返回值的泛型委托:
//int method(); Func test4 = () => 10; //int method(int); Functest5 = (x) => x * 2; //int method(int ,int); Func test6 = (x, y) => x * y; Console.WriteLine(test4()); Console.WriteLine(test5(3)); Console.WriteLine(test6(4, 5));
是不是很简单,Func系列的委托时有返回值的委托。但是在方便之余还是感叹下微软的鬼斧神工吧,哈哈!!