1.委託的典型用法編程
1.1定義一個委託:spa
public delegate int AddDelegate(int i, int j);
1.2 定義一個MyClass類,放置一個知足 AddDelegate委託要求的方法code
1 class MyClass 2 { 3 public int Add(int i , int j) 4 { 5 return i + j; 6 } 7 }
1.3定義一個委託變量對象
AddDelegate del = null;
1.4實例化一個MyClass對象,並將其 Add方法引用傳給委託變量delblog
MyClass obj = new MyClass(); del = obj.Add ;
1.5經過委託變量調用MyClass對象的 Add()方法it
int result = del(100, 200); Console.WriteLine(result);//300
總結:定義委託,定義委託所須要的方法,調用class
2.爲了簡化委託編程,C#首先引入了一種語法特性—— 匿名方法,以後,再天然地演化爲了Lambda表達式。變量
匿名方法的示例(AnonymousMethodToLambda )語法
2.1定義委託引用
public delegate int AddDelegate(int i,int j );
2.2使用匿名方法定義委託變量//匿名方法「沒有名字」, 能夠直接賦值給委託類 型的變量。
AddDelegate del = delegate(int i, int j) { return i + j; };
2.3經過委託變量「間接」地調用方法
Console.WriteLine(del(100,200)); //300
總結:匿名方法實際上是將方法定義與委託變量賦值兩個步驟 合而爲一,從而省去了專門定義符合委託要求的方法 這個步驟。(1.2和1.4)
3.更進一步,將匿名方法轉換爲Lambda表達式……
3.1
AddDelegate del = (i, j) => i + j;
總結:Lambda表達式在功能上等價於匿名方法,能夠當作是匿名方法的進一步簡化