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();
}
}
// 事件的簡(jiǎn)明定義方式
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-11
C#客戶端HttpClient請(qǐng)求認(rèn)證及數(shù)據(jù)傳輸
本文詳細(xì)講解了C#客戶端HttpClient請(qǐng)求認(rèn)證及數(shù)據(jù)傳輸,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
DevExpress實(shí)現(xiàn)自定義GridControl中按鈕文字內(nèi)容的方法
這篇文章主要介紹了DevExpress實(shí)現(xiàn)自定義GridControl中按鈕文字內(nèi)容的方法,需要的朋友可以參考下2014-08-08
Revit API取得變量的內(nèi)參名稱實(shí)例代碼
這篇文章介紹了Revit API取得變量的內(nèi)參名稱實(shí)例代碼,有需要的朋友可以參考一下2013-11-11
c#使用ManagedWifi查看當(dāng)前Wifi信號(hào)并選擇wifi的示例
這篇文章主要介紹了c#使用ManagedWifi查看當(dāng)前Wifi信號(hào)并選擇wifi的示例,需要的朋友可以參考下2014-04-04

