public int CompareTwoValue(int a, int b)
{
int c=a-b;
return c;
}
1. 接着聲明一個委託:
public delegate int deleMethod(int a,int b);
然後,我們可以通過這個委託調用這個上面的成員方法,
public int Show() {
deleMethod d1 = new deleMethod(CompareTwoValue);
return d1(5,10);
}
2.匿名委託,其實也稱作匿名方法,其實,這只是一種語法形式上的變化,因爲編譯的時候,還是要進行類型匹配的,那麼對於上面的Show方法,我可以使用匿名委託的方式來表達
public
int Show1()
{
deleMethod d2 =
delegate(int a,
int b)
{
int c=a-b;
return c;
};
return d2(5,10);
}
可以看出,語法形式上簡便了,所以我個人覺得匿名委託在C#2.0中並沒有實質性的用處,因爲到3.0時,涉及到Lamda表達式時,才真正的有用處,那麼上面的方法,如果用Lamda表達式表述如下:
public int Show2()
{
Func<int, int, int> f = ( a,b) =>
{
return a - b;
};
return f(5,10);
}
初次接觸Lamda表達式時感覺很難懂,但是一旦理解了之後,我就很喜歡這種表達方式,其實,Lamda表達式只是匿名委託的一種表現形式,從上面的結果可以很直觀的看出,三種方式中,Lamda表達式編寫的代碼量最少,最後看一下執行的結果
TestExample test = new TestExample();
Console.WriteLine(test.Show());
Console.WriteLine(test.Show1());
Console.WriteLine(test.Show2());
結果是一致的,其實三者的功能是一致的,只是表現形式不一樣,而三種方法中,Lamda表達式編寫的代碼量最少。