---恢復內容開始---
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;}
?
?
?
---恢復內容結束---