---恢复内容开始---
1.delegate
一般用法
delegate void WriteValue(string vale);//申明一个委托,参数是string类型,无返回值static void Main(string[] args){WriteValue write = new WriteValue(WriteLine);//实例化委托write("喝水");//调用 Console.ReadKey();}public static void WriteLine(string value) {for (int i = 0; i < 5; i++){Console.WriteLine("第{0}次{1}", i, value);}}
匿名委托
delegate void WriteValue(string vale);static void Main(string[] args){WriteValue write = delegate (string value) { Console.Write(value); };write("喝水");Console.ReadKey();}
使用lambda表达式
如需要传入多个参数,需要用"()"将参数包括起来,用","隔开.
delegate void WriteValue(string vale,string value1);static void Main(string[] args){WriteValue write = (value,value1) => { Console.Write(value);Console.Write(value1); };write("喝水","吃饭");Console.ReadKey();}
多播委托
delegate void WriteValue(string value);static void Main(string[] args){WriteValue value1 = new WriteValue(Write);value1 += new WriteValue(WriteLine);value1("s");Console.ReadKey();}public static void WriteLine(string value) {Console.WriteLine("帮我倒杯卡布奇洛,谢谢");}public static void Write(object value) {Console.WriteLine("多加点糖,谢谢");}
2.Func<T,E>
T表示参数类型,E表示返回值类型. Func<T1,T2,T3,E>表示有三个参数,类型分别为T1,T2,T3,返回值为E,以此类推.Func<E>表示没有参数,返回值类型为E.
delegate void WriteValue(string value);static void Main(string[] args){Func<string, int> func = Length;Console.WriteLine(func("哈哈哈"));Console.ReadKey();}public static int Length(string value) {return value.Length;}
3.Action<T>
Action<T1,T2,T3>表示有三个参数,无返回值,以此类推.
static void Main(string[] args){Action<string, string> action = Length;action("吃饭饭", "喝水水");Console.ReadKey();}public static void Length(string value,string value1) {Console.WriteLine(value);Console.WriteLine(value1);}
4.Predicate<T>:表示定义一组条件并确定指定对象是否符合这些条件的方法。该委托返回的是一个bool类型的值,如果比较满足条件 .只能有一个参数.
static void Main(string[] args){Predicate<int> predicate = Max;Console.WriteLine(predicate(12).ToString());Console.ReadKey();}public static bool Max(int value) {return value > 0;}
---恢复内容结束---