c#
中實現事件
事件就是發生的一件事情。把事件資訊通知給其它物件的物件稱為事件發布方(事件源)。物件可以把自己註冊到事件中,該物件稱為事件的訂戶(事件的註冊使用者),事件可以有乙個或多個註冊使用者。事件只把事件資訊通知給所註冊的使用者。
參考:http://msdn.microsoft.com/library/chs/default.asp?url=/library/chs/csref/html/vclrfeventpg.asp
c#中的事件需要借助於委託。它們使用委託呼叫預訂了該事件的使用者中的方法。當發布方引發事件時,可能會呼叫許多委託(視預訂該事件的物件數量而定)。
定義事件時,首先由發布方定義委託,然後才能定義事件。事件取決於委託。如:
先定義乙個委託
delegateme:
public delegate void delegateme(object param);
然後根據委託
delegateme
定義事件
eventme:
public event delegateme eventme;
.net
中事件的原形如下:
[attributes] [modifiers]eventtype
declarator;
[attributes] [modifiers]eventtype
member-name ;
其中:
attributes
(可選)
可選的宣告資訊。有關屬性和屬性類的更多資訊,請參見
c# 屬性。
modifiers
(可選)
可選的修飾符,包括:
abstract , new, override, static, virtual, extern ,
四個訪問修飾符之一
type
希望與此事件關聯的
delegate。
declarator
事件名。
member-name
事件名。
accessor-declarations
(可選)
訪問器的宣告,用於新增或移除客戶**中的事件處理程式。訪問器函式為
add和
remove
。只定義乙個而不定義另乙個是錯誤的。
為了建立並使用
c# 事件,必須採取以下步驟: 1.
建立或標識乙個委託。如果正在定義自己的事件,還必須確保有與事件關鍵字一起使用的委託。如果已經預定義了事件(例如在
.net framework
中),則事件的使用者只需要知道委託的名稱。 2.
建立乙個類,包含:
a.從委託建立的事件。 b.
(可選)驗證用
event
關鍵字宣告的委託例項是否存在的方法。否則,該邏輯必須放置在引發此事件的**中。 c.
呼叫此事件的方法。這些方法可以重寫一些基類功能。
此類定義事件。 3.
定義乙個或多個將方法連線到事件的類。所有這些類都包括: ·
使用+=
運算子和
-= 運算子將乙個或多個方法與基類中的事件關聯。 ·
將與事件關聯的方法的定義。 4.
使用此事件: ·
建立包含事件宣告的類物件。 ·
使用定義的建構函式,建立包含事件定義的類物件。
有關事件的更多資訊,請參見
msdn:
·10.7 事件 ·
事件教程 ·
事件和委託
示例:
using
system;
namespace
event_test
}
}
class clsa
}
class clsb
}
class clstest
}
}
這樣,總算完成了
c#.net
中委託與事件的學習,感覺掌握的難度不是很大,比較容易上手,使用起來比較方便。
C 中的事件 C 學習筆記
事件 事件 event 是一種使類或物件能夠提供通知的成員。事件的宣告與字段類似,不同的是事件的宣告包 含 event 關鍵字,並且型別必須是委託型別。在宣告事件成員的類中,事件的行為就像委託型別的字段 前提是該事件不是抽象的並且未宣告訪問器 該欄位儲存對乙個委託的引用,該委託表示已新增到該事件的事...
C 學習筆記 事件
事件 事件基於委託,為委託提供了一種發布 訂閱機制,觸發事件的類叫做發布者,而關心該事件有沒有發生,並等候通知的類叫訂閱者,而在中間又可以定義乙個訂閱系統,用來集中處理訂閱者對事件的訂閱和取消。using system using system.collections.generic using s...
C 中的委託與事件 筆記
1.委託是型別安全的 函式,是將方法作為方法引數。委託可以註冊多個方法 委託就是乙個 multicastdelegate類,可以通過 賦值,新增方法 物件方法與靜態方法 內部使用delegate.combine方法新增方法。2.事件 事件也是委託,是對委託的封裝,將委託宣告成private成員,不讓...