C 中delegate和event的區別

2021-08-22 12:06:41 字數 677 閱讀 2161

event是一種特殊的delegate,定義它們的類裡邊,這二者是一樣的,既可以採用 += 和-=的運算符號,也可以呼叫,但是在這個類之外,它們是不同的。

同為public型別,對於delegate,我們在定義它的類外,不僅可以採用 += 和-=的運算符號,還可隨時呼叫;但是對於event,在類外只能採用 += 和-=的運算符號,不能呼叫,也就是event把它本身的invoke函式和括號呼叫的函式變成擁有這個event類的私有函式。

舉個例子:

public

class publisher

}

//外部的呼叫

public

void

testevent()

還有一點,event只能被本類呼叫,其他的即使該類的派生類也不行,如果非要呼叫類內部的event,可以先宣告乙個方法,在該方法中呼叫event,例如publisher類中的raisesampleevent方法。

在建立可用作其他類的基類的類時,應考慮如下事實:事件是特殊型別的委託,只可以從宣告它們的類中呼叫。 派生類無法直接呼叫基類中宣告的事件。 儘管有時需要事件僅由基類引發,但在大多數情形下,應該允許派生類呼叫基類事件。 為此,您可以在包含該事件的基類中建立乙個受保護的呼叫方法。 通過呼叫或重寫此呼叫方法,派生類便可以間接呼叫該事件。

c 中delegate和事件

c 中delegate被稱作是 委託 類似c 中的函式指標,委託也可以指向乙個函式,但是不同的是,委託可以被理解為乙個列表,裡面的元素是一系列返回型別和參數列都相同的函式,之後就可以像使用變數一樣使用函式。system中有很多預先定義好的委託型別可以直接被呼叫,比如eventhandler就是事件的...

C 中的委託 delegate

delegate,中文意為 委託 是c 中新引入的乙個概念。我個人的理解,delegate相當於c 中函式指標在oop程式設計下的封裝。delegate的用途,如同函式指標的功能一樣,是為了在類似啟動執行緒 通用庫中的高階函式 以及事件處理等場合中,把乙個方法,或者說函式,作為乙個引數來傳遞。del...

C 中的delegate 委託

委託是乙個類,它定義了方法的型別,使得可以將方法當作另乙個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用if else switch 語句,同時使得程式具有更好的可擴充套件性。我的理解 委託相當於就是乙個函式,它有某種功能,其變數是一種方法,通過委託能夠間接的呼叫該方...