委托和事件,相信剛學C#的時候,很多朋友都會迷惑,委托和事件是怎麼一會事?難道真的那麼理解這個知點嗎!現在回想一下,當時我學的時候也迷惑了好幾天,不過可能是當時基礎不是很扎實的緣故。
最近我看了一篇關於這個題材的文章,講得挺好的,現在希望在這裡能和大家分享和交流一下這些知識,同時如果能有更好的見解或建議,希望能也能夠和小弟分享,增長一下知識,順便促進一下博客園的友好交流氣氛
首先,要了解事件,必須先從委托開始
委托可以認為是這樣的對象,它是包含具有相同簽名和返回值類型的有序方法列表。就是說它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞,這種將方法動態地賦給參數的做法使得程序具有更好的可擴展性。
public delegate void GreetingDelegate(string name);//先定義個委托,注意,委托是類型,所以聲明和所以類型聲明一樣,不需要在類內部聲明。
class Program
{
static void Main(string[] args)
{
GreetingDelegate delegate1;//聲明委托
delegate1 = EnglishGreeting;// 先給委托類型的變量賦值
delegate1 += ChineseGreeting;//委托和String很相似,但委托有個特別的地方,可以加多個值,調用的時候方法是按先後順 www.2cto.com
序調用
delegate1(“小明”)
Console.ReadKey();
}
static public void GreetPeople(string name, GreetingDelegate Make)
{
Make(name);
}
static public void EnglishGreeting(string name)//定
{
Console.WriteLine("Morning, " + name);
}
static public void ChineseGreeting(string name)
{
Console.WriteLine("早上好, " + name);
}
}
結果:"Morning, 小明"
"早上好, 小明“