委托,匿名方法,Lambda表達式
阿新 • • 發佈:2019-02-09
collect proc te pro 關心 goto eric sum ner 個數字
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace 委托 7 { 8 class Program 9 { 10 /// <summary> 11 /// 12 /// </summary> 13 /// <param name="param1"></param> 14 /// 把委托變量作為參數傳遞給一個函數。函數就可以使用委托調用它引用的任何函數。單純的委托,和單純的兩個方法15 /// 簡單講:各種方法都可以給委托調用,然後根據條件判斷具體使用的哪個方法;不用關心具體的方法,感覺沒啥用啊!!! 16 /// <param name="param2"></param> 17 /// <returns></returns> 18 delegate double processDelegate(double param1 ,double param2);//委托的聲明 19 static double multiply(double param1, double param2)20 { return param1 * param2; } 21 static double divide(double param1, double param2) 22 { return param1 / param2; } 23 static void Main(string[] args) 24 { 25 processDelegate process; 26 double d1 = 3; 27 double d2 = 2; 28 inti1; 29 input: Console.WriteLine("輸入一個數字用來判斷"); 30 31 try 32 { 33 i1 = Convert.ToInt32(Console.ReadLine()); 34 Console.WriteLine("輸入的數字是:{0}",i1.ToString()); 35 } 36 catch (Exception e) 37 { 38 39 // throw ; 40 Console.WriteLine(e.Message+"請在提示後重新輸入"); 41 42 goto input; 43 } 44 45 46 if (i1>=0&&i1<=5) 47 { 48 Console.WriteLine("相除"); 49 process = new processDelegate(divide); 50 51 } 52 else 53 { 54 Console.WriteLine("相乘"); 55 process = new processDelegate(multiply); 56 } 57 58 Console.WriteLine(process(d1,d2)); 59 Console.ReadLine(); 60 } 61 } 62 }
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace 委托 7 { 8 class Program 9 { 10 /// <summary> 11 /// 12 /// </summary> 13 /// <param name="param1"></param> 14 /// 把委托變量作為參數傳遞給一個函數。函數就可以使用委托調用它引用的任何函數。 15 /// 簡單講:各種方法都可以給委托調用,然後根據條件判斷具體使用的哪個方法;不用關心具體的方法,感覺沒啥用啊!!! 16 /// 加上匿名方法,感覺挺有意思了 17 /// <param name="param2"></param> 18 /// <returns></returns> 19 delegate double processDelegate(double param1 ,double param2);//委托的聲明 20 21 22 //static double multiply(double param1, double param2) 23 //{ return param1 * param2; } 24 //static double divide(double param1, double param2) 25 //{ return param1 / param2; } 26 //把上面兩個方法給匿名了 27 28 static void Main(string[] args) 29 { 30 processDelegate process; 31 double d1 = 3; 32 double d2 = 2; 33 int i1; 34 input: Console.WriteLine("輸入一個數字用來判斷"); 35 36 try 37 { 38 i1 = Convert.ToInt32(Console.ReadLine()); 39 Console.WriteLine("輸入的數字是:{0}",i1.ToString()); 40 } 41 catch (Exception e) 42 { 43 44 // throw ; 45 Console.WriteLine(e.Message+"請在提示後重新輸入"); 46 47 goto input; 48 } 49 50 51 if (i1>=0&&i1<=5) 52 { 53 Console.WriteLine("相除"); 54 //process = new processDelegate(divide);//匿名了 55 process = delegate (double param1, double param2) 56 { return param1 / param2; }; 57 58 59 } 60 else 61 { 62 Console.WriteLine("相乘"); 63 //process = new processDelegate(multiply);//匿名了 64 process = delegate (double param1, double param2) 65 { return param1 * param2; }; 66 67 } 68 69 Console.WriteLine(process(d1,d2)); 70 Console.ReadLine(); 71 } 72 } 73 }委托和兩個匿名方法
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace 委托 7 { 8 class Program 9 { 10 /// <summary> 11 /// 12 /// </summary> 13 /// <param name="param1"></param> 14 /// 把委托變量作為參數傳遞給一個函數。函數就可以使用委托調用它引用的任何函數。 15 /// 簡單講:各種方法都可以給委托調用,然後根據條件判斷具體使用的哪個方法;不用關心具體的方法,感覺沒啥用啊!!! 16 /// 加上匿名方法,感覺挺有意思了 17 /// 加上Lambda 18 /// <param name="param2"></param> 19 /// <returns></returns> 20 delegate double processDelegate(double param1 ,double param2);//委托的聲明 21 22 23 //static double multiply(double param1, double param2) 24 //{ return param1 * param2; } 25 //static double divide(double param1, double param2) 26 //{ return param1 / param2; } 27 //把上面兩個方法給匿名了 28 29 static void Main(string[] args) 30 { 31 processDelegate process; 32 double d1 = 3; 33 double d2 = 2; 34 int i1; 35 input: Console.WriteLine("輸入一個數字用來判斷"); 36 37 try 38 { 39 i1 = Convert.ToInt32(Console.ReadLine()); 40 Console.WriteLine("輸入的數字是:{0}",i1.ToString()); 41 } 42 catch (Exception e) 43 { 44 45 // throw ; 46 Console.WriteLine(e.Message+"請在提示後重新輸入"); 47 48 goto input; 49 } 50 51 52 if (i1>=0&&i1<=5) 53 { 54 Console.WriteLine("相除"); 55 //process = new processDelegate(divide);//匿名了 56 process = delegate (double param1, double param2)//匿名方法 57 { return param1 / param2; }; 58 59 60 } 61 else 62 { 63 Console.WriteLine("相乘"); 64 //process = new processDelegate(multiply);//匿名了 65 66 // process = (p1, p2) => p1 * p2;//Lambda表達式,現在更簡單了 67 //可以在Lambda中寫更多的方法,類似上面的匿名方法 68 process = (double p1, double p2) => 69 { 70 Console.WriteLine("我是表達式"); 71 return p1 * p2; 72 };//註意這裏的這個符號哦,這個是表達式的格式規範 73 } 74 75 Console.WriteLine(process(d1,d2)); 76 Console.ReadLine(); 77 } 78 } 79 }委托和一個匿名方法一個Lambda表達式
01:50:11 2019-02-09
回頭找找Lambda和集合泛型的用法
委托,匿名方法,Lambda表達式