1.委托的典型用法 1.1定義一個委托: 1.2 定義一個MyClass類,放置一個滿足 AddDelegate委托要求的方法 1.3定義一個委托變數 1.4實例化一個MyClass對象,並將其 Add方法引用傳給委托變數del 1.5通過委托變數調用MyClass對象的 Add()方法 總結:定義 ...
1.委托的典型用法
1.1定義一個委托:
public delegate int AddDelegate(int i, int j);
1.2 定義一個MyClass類,放置一個滿足 AddDelegate委托要求的方法
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方法引用傳給委托變數del
MyClass obj = new MyClass(); del = obj.Add ;
1.5通過委托變數調用MyClass對象的 Add()方法
int result = del(100, 200); Console.WriteLine(result);//300
總結:定義委托,定義委托所需要的方法,調用
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表達式在功能上等價於匿名方法,可以看成是匿名方法的進一步簡化