c 中的委託與事件

2021-05-31 23:26:29 字數 2004 閱讀 6799

c#委託與事件

一、委託

關鍵字:delegate 委託是c#中的一種型別,它實際上是乙個對某個方法引用的類

委託是一種引用方法型別 一旦為委託分配了方法 委託將與該方法有相同完全的行為(委託具有引數 和返回值)

delegate類能擁有乙個簽名(signature);

只能持有與他簽名相匹配的方法的引用;

委託實際上是封裝了乙個函式的引用物件;

類似於c.c++中的函式指標;

使用方法:

1、宣告乙個delegate 物件型別

public delegate void mydelegate(string name);
2、建立delegate物件

mydelegate md=new mydelegate(methodname);//指向方法名稱
3、呼叫delegate物件
private string methodname(string name)

md("jack");

public void drive(string carname)

public void drivemoto(string carname)

這個就是乙個簡單的開車的方法 沒有實際意義 當我們

如果是開的是汽車或者自行車的時候 我們希望也能對應的方法

那麼我們就得定義

public void drivecar(string carname);

public void drivebic(string carname);

但是我們擴充套件的時候 效能很差 也不符合傳說中面相物件的原則

我們可以通過委託來傳遞方法簽名

public delegate void mydelegate(string name);

public void drive(string carname,mydelegate funcname)

ok 當我們呼叫 drive函式的時候直接就可以
drive(moto,drivemoto)

drive(moto,drivecar);

好,現在有點意思了,其實委託在簡單的程式中並不是有多大的作用,

但是.net事件、非同步呼叫、 以及自定義事件 等等都是用到委託的

委託應用在在傳遞匿名方法上,這種動態的將方法賦給引數 減少了

程式中使用判斷語句的次數

二、事件

事件就是某個物件發出的訊息

除非事件的物件 (sender) 做出相應的物件(receiver)

c#中的事件就是有乙個特殊簽名的delegate委託(event)

//定義委託

public delegate void drivecareventhandler(); //定義事件(宣告乙個特殊的委託物件)

public class car

}} //呼叫方法

car car=new car();

car.drivecarevent+=new drivecareventhandler(car_drivevent);

car.drivecar();

static void car_drivevent()

訂閱事件用+= 取消訂閱用-= 可以進行多播訂閱(委託亦可以 不過第一次指定時候用= 餘下來用+=)

總結:委託就是委任別人去代辦某些問題和方法,盡量的使業務和邏輯之間松耦合 來達到對邏輯的封裝以及呼叫。

說的簡單一點就是函式的例項化,我們對例項進行操作

事件是特殊的委託型別,物件傳送的訊息,以發訊號通知操作的發生。操作可能是由使用者互動(例如滑鼠單擊)引起的,

也可能是由某些其他的程式邏輯觸發的。

委託和事件 這是我個人的一些理解,也參考了網上的例子自己進行學習和感悟 希望能夠分享小小的心得 共同進步

C 中的事件與委託

delegate委託 delegate是c 中的一種型別,它實際上是乙個能夠持有對某個方法的引用的類。與其它的類不同,delegate類能夠擁有乙個簽名 signature 並且它 只能持有與它的簽名相匹配的方法的引用 它所實現的功能與c c 中的函式指標十分相似。它允許你傳遞乙個類a的方法m給另乙...

C 中的委託與事件

寫這篇博文的目的是要記錄一下學習委託與事件的心的與 方便之後查閱 1 委託,是乙個函式的簽名,規定了函式的返回值與引數列表。類似於這類函式的乙個 簽名相同但是用途不同的函式s,要執行的時候就通過 來執行,使得函式執行得到諸多的方便。delegate相當於乙個類,具有類的一些特性。2 事件,事件就是應...

C 中的委託與事件 筆記

1.委託是型別安全的 函式,是將方法作為方法引數。委託可以註冊多個方法 委託就是乙個 multicastdelegate類,可以通過 賦值,新增方法 物件方法與靜態方法 內部使用delegate.combine方法新增方法。2.事件 事件也是委託,是對委託的封裝,將委託宣告成private成員,不讓...