日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#事件访问器

發布時間:2025/4/16 C# 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#事件访问器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C#事件訪問器

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

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

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

public?event?EventHandler?Elapsed
{
????add
????{
????????//...?執行+=運算符的代碼
????}
????
?????remove
?????{
????????//...?執行-=運算符的代碼
?????}

}

?

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

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

?

完整示例:

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

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

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

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

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

????????}

????}

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


????????????Console.ReadKey();
????????}

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

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

?

轉載于:https://www.cnblogs.com/jhxk/articles/2576888.html

總結

以上是生活随笔為你收集整理的C#事件访问器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。