C#中事件只能在內(nèi)部調(diào)用的原因分析
public class Customer { // 定義事件 public event OrderEventHandler Order; public string? name; public float? price; protected void onOrder(OrderEventArgs orderEventArgs) { if(Order != null) { Order.Invoke(this, orderEventArgs); } } ......
public class Program{ public static void Main(string[] args) { var customer = new Customer(); customer.name = "1"; Waiter waiter = new Waiter(); customer.Order += waiter.Serve; // customer.Order.Invoke() 這樣寫無法編譯 customer.Think(); customer.Pay(); } }
// 事件的簡明定義方式 public event OrderEventHandler Order; 而C#中事件完整的定義方式是這樣: private OrderEventHandler orderEventHandler;//委托,使用private 修飾 public event OrderEventHandler Order // 事件,對(duì)委托方法進(jìn)行增減 { add { this.orderEventHandler += value; } remove { this.orderEventHandler -= value; } }
protected void onOrder(OrderEventArgs orderEventArgs) { if(this.orderEventHandler != null) { // 調(diào)用委托 this.orderEventHandler.Invoke(this, orderEventArgs); } }
到此這篇關(guān)于C#中事件為什么只能在內(nèi)部調(diào)用的文章就介紹到這了,更多相關(guān)C#事件內(nèi)部調(diào)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#中Winform獲取文件路徑的方法實(shí)例小結(jié)
這篇文章主要介紹了C#中Winform獲取文件路徑的方法,以實(shí)例形式較為詳細(xì)的總結(jié)了WinForm關(guān)于路徑操作的常用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10在C#中使用OpenCV(使用OpenCVSharp)的實(shí)現(xiàn)
這篇文章主要介紹了在C#中使用OpenCV(使用OpenCVSharp)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11C#客戶端HttpClient請(qǐng)求認(rèn)證及數(shù)據(jù)傳輸
本文詳細(xì)講解了C#客戶端HttpClient請(qǐng)求認(rèn)證及數(shù)據(jù)傳輸,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01DevExpress實(shí)現(xiàn)自定義GridControl中按鈕文字內(nèi)容的方法
這篇文章主要介紹了DevExpress實(shí)現(xiàn)自定義GridControl中按鈕文字內(nèi)容的方法,需要的朋友可以參考下2014-08-08Revit API取得變量的內(nèi)參名稱實(shí)例代碼
這篇文章介紹了Revit API取得變量的內(nèi)參名稱實(shí)例代碼,有需要的朋友可以參考一下2013-11-11c#使用ManagedWifi查看當(dāng)前Wifi信號(hào)并選擇wifi的示例
這篇文章主要介紹了c#使用ManagedWifi查看當(dāng)前Wifi信號(hào)并選擇wifi的示例,需要的朋友可以參考下2014-04-04