最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中事件只能在內(nèi)部調(diào)用的原因分析

 更新時間:2021年11月26日 08:43:28   作者:cavalier23  
事件(Event)?基本上說是一個用戶操作,如按鍵、點擊、鼠標(biāo)移動等等,或者是一些提示信息,如系統(tǒng)生成的通知。應(yīng)用程序需要在事件發(fā)生時響應(yīng)事件,這篇文章主要介紹了C#中事件為什么只能在內(nèi)部調(diào)用,需要的朋友可以參考下
在學(xué)習(xí)C#中委托和事件時,產(chǎn)生一個疑問,類中定義的事件在類內(nèi)部可以直接調(diào)用,而在類外部,事件卻只能添加或移除委托方法
比如下面這段代碼,類Customer中定義了一個委托 Order ,Customer內(nèi)部可以直接調(diào)用 Order.Invoke()
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);
            }
        }
     ......
而在類的外部,只能添加或移除委托方法,不能調(diào)用Order.Invoke(),下面代碼中customer.Order.Invoke()會報錯。
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();
        }
    }
細看劉鐵猛老師的《C#入門詳解》后,才明白原來這是C#語法糖讓我產(chǎn)生的誤解,在定義事件時,
下面這行代碼是常見的定義方式,這是一種簡明的定義方法
// 事件的簡明定義方式
public event  OrderEventHandler Order;
而C#中事件完整的定義方式是這樣:
        private OrderEventHandler orderEventHandler;//委托,使用private 修飾
        public event  OrderEventHandler Order // 事件,對委托方法進行增減
        {
            add
            {
                this.orderEventHandler += value;
            }
            remove 
            { 
                this.orderEventHandler -= value; 
            }
        }
使用完整寫法定義事件后,在內(nèi)部調(diào)用也不能用事件Order去調(diào)用了,要用委托去調(diào)用
     protected void onOrder(OrderEventArgs orderEventArgs)
        {
            if(this.orderEventHandler != null)
            {
                // 調(diào)用委托
                this.orderEventHandler.Invoke(this, orderEventArgs);
            }
        }
可以看到,我們真正調(diào)用的委托使用private修飾,是私有的,所以只能在內(nèi)部調(diào)用,而事件(event)則是對私有的委托進行了包裝,實現(xiàn)對委托方法的增加或移除。
剛學(xué)C#,不知道說清楚沒。。。

到此這篇關(guān)于C#中事件為什么只能在內(nèi)部調(diào)用的文章就介紹到這了,更多相關(guān)C#事件內(nèi)部調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Unity Line Renderer組件的常用屬性說明

    基于Unity Line Renderer組件的常用屬性說明

    這篇文章主要介紹了基于Unity Line Renderer組件的常用屬性說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#從windows剪貼板獲取并顯示文本內(nèi)容的方法

    C#從windows剪貼板獲取并顯示文本內(nèi)容的方法

    這篇文章主要介紹了C#從windows剪貼板獲取并顯示文本內(nèi)容的方法,涉及C#操作剪貼板的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 詳解如何在C#中接受或拒絕Excel中的修訂

    詳解如何在C#中接受或拒絕Excel中的修訂

    修訂功能可以跟蹤文檔所有的修改,了解修改的過程,這對于團隊協(xié)同文檔編輯、審閱是非常有用的一個功能。本文將詳細為您介紹如何接受或拒絕 Excel 中的修訂,感興趣的可以收藏一下
    2022-12-12
  • WPF實現(xiàn)半圓形導(dǎo)航菜單

    WPF實現(xiàn)半圓形導(dǎo)航菜單

    這篇文章主要為大家詳細介紹了WPF實現(xiàn)半圓形導(dǎo)航菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C#表達式樹講解

    C#表達式樹講解

    本文詳細講解了C#表達式樹的創(chuàng)建、生成和使用,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • C# 打開電子郵件軟件的具體方法

    C# 打開電子郵件軟件的具體方法

    這篇文章介紹了C# 打開電子郵件軟件的具體方法,有需要的朋友可以參考一下
    2013-11-11
  • C#異步編程Task的創(chuàng)建方式

    C#異步編程Task的創(chuàng)建方式

    這篇文章介紹了C#異步編程Task的創(chuàng)建方式,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Winform實現(xiàn)抓取web頁面內(nèi)容的方法

    Winform實現(xiàn)抓取web頁面內(nèi)容的方法

    這篇文章主要介紹了Winform實現(xiàn)抓取web頁面內(nèi)容的方法,代碼只有短短幾行,但是功能很實用,需要的朋友可以參考下
    2014-09-09
  • C# WinForm打開PDF文件并在窗體中顯示

    C# WinForm打開PDF文件并在窗體中顯示

    本文主要介紹通過引用Adobe reader提供的COM組件,以實現(xiàn)在WinForm程序中顯示PDF文件的功能。
    2016-05-05
  • 淺析WPF中常用屬性的相關(guān)概念和應(yīng)用

    淺析WPF中常用屬性的相關(guān)概念和應(yīng)用

    在WPF開發(fā)中,經(jīng)常聽到各種屬性,如:依賴屬性,附加屬性,CLR屬性,那這些不同類型的屬性,具體又有什么作用呢,下面就跟隨小編一起來學(xué)習(xí)一下吧
    2024-03-03

最新評論

资兴市| 赣榆县| 南宫市| 集贤县| 中阳县| 英德市| 菏泽市| 昆山市| 江口县| 耿马| 宜州市| 唐山市| 鄄城县| 闵行区| 海盐县| 衡南县| 扶绥县| 青神县| 阳江市| 望谟县| 宿迁市| 望谟县| 东乌珠穆沁旗| 六枝特区| 达日县| SHOW| 清水县| 高阳县| 嵊泗县| 石阡县| 岳普湖县| 钟山县| 台州市| 冷水江市| 西平县| 金坛市| 开远市| 中宁县| 德安县| 仁怀市| 琼海市|