c#之事件用法
事件基于委托,可以為任何一種委托類(lèi)型提供一種發(fā)布\訂閱機(jī)制。
使用event關(guān)鍵字將一個(gè)委托類(lèi)型定義為事件。
下面通過(guò)一個(gè)例子介紹事件:
//事件發(fā)布類(lèi)
public class PublishEvent
{
public delegate string Display(string str);
public event Display DisplayEvent;
//客戶端代碼通過(guò)調(diào)用這個(gè)方法觸發(fā)事件
public void Shows(string str)
{
if (DisplayEvent != null)
{
DisplayEvent(str);
}
}
}
//事件偵聽(tīng)類(lèi),這個(gè)類(lèi)訂閱事件
public class Listen1
{
public string MakeAlert(string str)
{
Console.WriteLine(str + "Listen1");
return str + "Listen1";
}
}
public class Listen2
{
public string ShowMsg(string str)
{
Console.WriteLine(str + "Listen2");
return str + "Listen2";
}
}客戶端代碼:
class Program
{
static void Main()
{
PublishEvent pe = new PublishEvent();
Listen1 l1 = new Listen1();
Listen2 l2 = new Listen2();
//變量l1和l2訂閱了事件
pe.DisplayEvent += l1.MakeAlert;
pe.DisplayEvent += l2.ShowMsg;
//觸發(fā)事件
pe.Shows("事件");
Console.ReadKey();
}
}事件就是一個(gè)特殊的委托(http://www.fzitv.net/article/244051.htm),它是一個(gè)用于事件驅(qū)動(dòng)模型的專(zhuān)用委托.你可以在客戶代碼中直接調(diào)用委托來(lái)激發(fā)委托指向的函數(shù),而事件不可以,事件的觸發(fā)只能由服務(wù)代碼自己觸發(fā)。也就是說(shuō)在你的代碼里委托你不但可以安排誰(shuí)是它的調(diào)用函數(shù),還可以直接調(diào)用它,而事件不能直接調(diào)用,只能通過(guò)某些操作觸發(fā)。除此之此,事件擁有委托的所有功能,包括多播特性。即事件可以有多個(gè)事件處理函數(shù),委托同樣也可以是個(gè)多播委托.
事件是封裝過(guò)的委托實(shí)例;委托是類(lèi)型,事件是實(shí)例!
EventHandler<TEventArgs>.NET自帶的委托,也用于定義事件。
到此這篇關(guān)于c#之事件用法的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# 字符串、數(shù)組和List的截取和轉(zhuǎn)換實(shí)例
下面小編就為大家分享一篇C# 字符串、數(shù)組和List的截取和轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
使用C#實(shí)現(xiàn)RTP數(shù)據(jù)包傳輸 參照RFC3550
本篇文章小編為大家介紹,使用C#實(shí)現(xiàn)RTP數(shù)據(jù)包傳輸 參照RFC3550,需要的朋友參考下2013-04-04
C#使用時(shí)序數(shù)據(jù)庫(kù)InfluxDB的教程詳解
InfluxDB是一個(gè)開(kāi)源的時(shí)序數(shù)據(jù)庫(kù),可以自動(dòng)處理時(shí)間序列數(shù)據(jù),這篇文章主要為大家詳細(xì)介紹了C#如何使用InfluxDB,感興趣的小伙伴可以跟隨小編一起了解下2023-11-11
Unity實(shí)現(xiàn)鼠標(biāo)點(diǎn)2D轉(zhuǎn)3D進(jìn)行旋轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)鼠標(biāo)點(diǎn)2D轉(zhuǎn)3D進(jìn)行旋轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
Unity實(shí)現(xiàn)游戲傷害數(shù)字顯示HUD的方法
游戲中收到傷害掉血,會(huì)有飄動(dòng)的傷害數(shù)值,本文主要介紹Unity實(shí)現(xiàn)游戲傷害數(shù)字顯示HUD的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10

