C 中委託與事件的學習小結(二)

2021-08-28 04:13:32 字數 1304 閱讀 4324

接上篇繼續寫,順便也做個記錄

下面該介紹事件了。事件就是在委託型別前面加上乙個event關鍵字,就變成了事件了,事件的具體一些用法也和委託非常類似!(哈哈,這麼理解應該沒毛病吧~!)當然,兩者之間還是有區別的。我們用乙個小例子來做個**明。

例:  class program

static void main(string args)

在例子中,我們發現program這個類中,定義了乙個事件mydelegate,然後我們通過主函式中對新型別變數p中的mydelegate賦值來取的test1方法的結果。而這個事件的呼叫必須在類中進行,在類外無法進行呼叫。而委託則可以在類外進行宣告和呼叫。這就是兩者的區別。其實可以理解為事件是特殊的委託,只能在建立他的類中進行呼叫,以此來規避錯誤。

最後寫一點對於觀察者模式的感想,也算是學習委託的乙個最後總結吧。

觀察者模式,是一種設計思路,其核心思想是存在乙個被觀察者和若干觀察者,觀察者根據被觀察者的狀態切換,不斷調整自身的狀態。在程式設計工作中,這種思路能大大節約我們**量,減少**間的耦合性,同時降低更新維護時的**量,增加工作效率。下面我通過今天學習的乙個小例子,與大家分享一下這種模式,以及委託這種方法,在這個例子中的作用。

//首先是我們的被觀察者類,也就是貓類

class cat

//貓進屋(貓的狀態發生改變)(被觀察者的狀態發生改變)

public void catcoming()

public event action catcome;//表示宣告乙個事件,發布了乙個訊息。

}這裡我們看到,我們定義了乙個catcome事件,將其放到cat這個類下。然後我們在catcoming這個方法中呼叫它。

接著,我們建立乙個c#指令碼下的mouse類:

//這個就是我們的觀察者類,我們通過觀察貓(也就是被觀察者)的狀態來呼叫方法runaway;

class mouse

public void runaway()

我們看到在cat類中時間catcome發布了乙個訊息,然後在mouse類中,通過+=這個操作符,將runaway這個方法,新增到catcome訊息集合中,從而完成對被觀察者mouse的乙個同步更新。最後寫一下主函式:

class program

}這裡多寫了一句catcome()方法,就是為了讓大家注意,事件catcome是在cat類中定義的,所以只能在cat類中進行使用,不可以在類外進行觸發。所以我們就通過catcoming這個方法,將所有被觀察者狀態進行乙個同步。與此同時,這樣編寫的**也非常便利與後期的更新,只需要在主函式中新增mouse類的例項化,就可以實現與cat類的同步更新,同時減少了修改cat類的繁瑣工作,增強了穩定性,也提公升了工作效率。

C 中委託與事件

c 為了型別安全,預設並不支援指標。而是採用委託的方式。委託的宣告 屬性 修飾符 delegate 返回型別 委託型別名 引數列表 其中返回型別和引數列表共同決定了委託型別能關聯的一組方法 public delegate int tdelegate int a,int b 宣告委託 在類classd...

C 中委託和事件

當我們在窗體下定義變數後,是不是可以輕而易舉在此窗體使用這個變數呢?那麼如果跨窗體引用呢?其實也簡單,普遍操作,定義乙個全域性變數,但是這樣操作不規範,取而代之的是應該在某個窗體定義乙個類,然後在類中宣告乙個靜態變數,此時跨窗體使用的時候直接使用classname.staticname 既然變數可以...

關於c 中委託使用小結

一 簡述 委託對與我們程式設計人員來說,一點都不陌生,在實際工作過程中,或多或少都應該是接觸過 但是對與程式設計新手來說,對與委託的理解和使用應該還是乙個坎,但是只要理解清楚了,這個坎也就過去了。二 定義 委託,其實在我們日常生活中,也經常用到委託的,比如 律師其實就是充當了乙個委託的角色,當事人委...