亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#事件訪問器詳解

 更新時間:2014年01月15日 10:11:30   作者:  
C#事件訪問器詳細(xì)解析。下面示例演示了具有訪問器的聲明.兩個訪問器都有叫做value的隱式值參數(shù),它接受實例或靜態(tài)方法的引用

我們可以通過為事件定義事件訪問器,來控制事件運算符+=、-=運算符的行為

•有兩個訪問器:add和remove
•聲明事件的訪問器看上去和聲明一個屬性差不多

下面示例演示了具有訪問器的聲明.兩個訪問器都有叫做value的隱式值參數(shù),它接受實例或靜態(tài)方法的引用

復(fù)制代碼 代碼如下:

public event EventHandler Elapsed
{
    add
    {
        //... 執(zhí)行+=運算符的代碼
    }

     remove
     {
        //... 執(zhí)行-=運算符的代碼
     }

}


聲明了事件訪問器后,事件不包含任何內(nèi)嵌委托對象.我們必須實現(xiàn)自己的機制來存儲和移除事件的方法

事件訪問器表現(xiàn)為void方法,也就是不能使用會返回值的return語句

完整示例:

復(fù)制代碼 代碼如下:

//聲明一個delegate
    delegate void EventHandler();

    class MyClass
    {
        //聲明一個成員變量來保存事件句柄(事件被激發(fā)時被調(diào)用的delegate)
        private EventHandler m_Handler = null;

        //激發(fā)事件
        public void FireAEvent()
        {
            if (m_Handler != null)
            {
                m_Handler();
            }
        }

        //聲明事件
        public event EventHandler AEvent
        {
            //添加訪問器
            add
            {
                //注意,訪問器中實際包含了一個名為value的隱含參數(shù)
                //該參數(shù)的值即為客戶程序調(diào)用+=時傳遞過來的delegate
                Console.WriteLine("AEvent add被調(diào)用,value的HashCode為:" + value.GetHashCode());
                if (value != null)
                {
                    //設(shè)置m_Handler域保存新的handler
                    m_Handler = value;
                }
            }

            //刪除訪問器
            remove
            {
                Console.WriteLine("AEvent remove被調(diào)用,value的HashCode為:" + value.GetHashCode());
                if (value == m_Handler)
                {
                    //設(shè)置m_Handler為null,該事件將不再被激發(fā)
                    m_Handler = null;
                }
            }

        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            MyClass obj = new MyClass();
            //創(chuàng)建委托
            EventHandler MyHandler = new EventHandler(MyEventHandler);
            MyHandler += MyEventHandle2;
            //將委托注冊到事件
            obj.AEvent += MyHandler;
            //激發(fā)事件
            obj.FireAEvent();
            //將委托從事件中撤銷
            obj.AEvent -= MyHandler;
            //再次激發(fā)事件
            obj.FireAEvent();


            Console.ReadKey();
        }

        //事件處理程序
        static void MyEventHandler()
        {
            Console.WriteLine("This is a Event!");
        }

        //事件處理程序
        static void MyEventHandle2()
        {
            Console.WriteLine("This is a Event2!");
        }
    }

相關(guān)文章

  • 詳解C#方法中使用out參數(shù)做登錄判斷代碼實例

    詳解C#方法中使用out參數(shù)做登錄判斷代碼實例

    這篇文章主要介紹了C#使用out參數(shù)做登錄判斷,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • C#實現(xiàn)窗體間傳值實例分析

    C#實現(xiàn)窗體間傳值實例分析

    這篇文章主要介紹了C#實現(xiàn)窗體間傳值的方法,結(jié)合實例形式較為詳細(xì)的分析了C#針對窗體間傳值的處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • C# 鼠標(biāo)穿透窗體功能的實現(xiàn)方法

    C# 鼠標(biāo)穿透窗體功能的實現(xiàn)方法

    通過以下代碼,在窗體啟動后調(diào)用方法SetPenetrate() 即可實現(xiàn)窗體的穿透功能,有需要的朋友可以參考一下
    2013-10-10
  • C#基于Socket實現(xiàn)多人聊天功能

    C#基于Socket實現(xiàn)多人聊天功能

    這篇文章主要為大家詳細(xì)介紹了C#基于Socket實現(xiàn)多人聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • asp.net(c#)編程實現(xiàn)將彩色圖片變灰階圖片的方法示例

    asp.net(c#)編程實現(xiàn)將彩色圖片變灰階圖片的方法示例

    這篇文章主要介紹了asp.net(c#)編程實現(xiàn)將彩色圖片變灰階圖片的方法,結(jié)合實例形式分析了C#圖片讀取及屬性操作相關(guān)技巧,需要的朋友可以參考下
    2017-07-07
  • C#設(shè)計模式之Builder生成器模式解決帶老婆配置電腦問題實例

    C#設(shè)計模式之Builder生成器模式解決帶老婆配置電腦問題實例

    這篇文章主要介紹了C#設(shè)計模式之Builder生成器模式解決帶老婆配置電腦問題,簡單介紹了生成器模式的概念、功能并結(jié)合具體實例形式分析了C#生成器模式解決配電腦問題的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • C#如何實現(xiàn)對sql server數(shù)據(jù)庫的增刪改查

    C#如何實現(xiàn)對sql server數(shù)據(jù)庫的增刪改查

    本文的主要內(nèi)容是C#實現(xiàn)對sql server數(shù)據(jù)庫的增刪改查,示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • c#異步操作async?await狀態(tài)機的總結(jié)(推薦)

    c#異步操作async?await狀態(tài)機的總結(jié)(推薦)

    這篇文章主要介紹了c#異步操作async?await狀態(tài)機的總結(jié),關(guān)于async和await每個人都有自己的理解,甚至關(guān)于異步和同步亦或者關(guān)于異步和多線程每個人也都有自己的理解,本文通過實例代碼詳細(xì)講解,需要的朋友可以參考下
    2023-02-02
  • c#之OpenFileDialog解讀(打開文件對話框)

    c#之OpenFileDialog解讀(打開文件對話框)

    這篇文章主要介紹了c#之OpenFileDialog(打開文件對話框),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • C#編寫COM組件的方法分析

    C#編寫COM組件的方法分析

    這篇文章主要介紹了C#編寫COM組件的方法,結(jié)合實例形式分析了C#編寫COM組件的具體步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06

最新評論