C 委託與事件有啥區別?

2021-10-12 16:52:03 字數 1562 閱讀 3338

一.委託和事件的差別在哪?

請各位思考乙個問題,委託與事件功能幾乎相同,委託能幹的事件也能幹,反之亦然。那為啥還要分別弄出兩個來呢?

(如果你是在學校學的暈頭轉向的可憐兄弟,那就繼續c#教程往下看吧,別直接跳到三了)

二.委託

說的直白一點,你可以把委託當c++中的函式指標來用。同返回值型別,同引數列表。

舉個例子:

using system;")

;return res;

}public

intshentong

(int weight,

int distance)")

;return res;

}public

intshunfeng

(int weight,

int distance)")

;return res;}}

class

program

}}

實際上還可以這麼寫

mydel mydel = new mydel(company.yuantong);

注釋裡說例項化,這new乙個咋這麼像乙個類呀?它不會…

為了解決你心中的疑惑,我們看看反編譯結果

你的猜測很正確,委託就是乙個類。

三.事件和委託啥區別?

上例多播委託也可用事件做到,這裡將事件發布方法寫到另外乙個類裡了,讀者可將其也放入company類,效果是一樣的。

using system;

public

int distance

//宣告乙個事件

public

event

mydel cal;

public

void

send()

}}//公司類 處理事件 訂閱者

class

company")

;return res;

}public

intshentong

(int weight,

int distance)")

;return res;

}public

intshunfeng

(int weight,

int distance)")

;return res;}}

class

program

}}

這樣好像委託和事件沒什麼區別,委託能做的事件也能做,事件能做的委託也能做。

還是那個問題,委託與事件功能幾乎相同,委託能幹的事件也能幹,反之亦然。那為啥還要分別弄出兩個來呢?

我們還是來看看反編譯結果

這個combine應該不用解釋了吧。結論就是:沒啥區別,它實際上事件是微軟的乙個語法糖。你可以把他當作c++裡面的函式指標陣列。

出處:

C 委託與事件的區別

事件是利用委託來申明的,因此先解釋委託。委託是乙個類,它與其他類如int,string等沒有本質區別,int代表的是所有的整形,而string代表的是字串,委託則代表的是一類方法,這類方法具有相同返回型別和相同引數。委託的定義 public delegate void calculatorhandl...

C 委託與事件區別簡單總結

前天接了個 面試,被問到事件與委託的區別,雖然一直用但真要你說有什麼區別一時半會還真說不上來。於是問google老師,得到如下答案 2.委託可以在外部被其他物件呼叫,而且可以有返回值 返回最後乙個註冊方法的返回值 而事件不可以在外部呼叫,只能在宣告事件的類內部被呼叫。我們可以使用這個特性來實現觀察者...

委託與事件的區別

用乙個公司的場景來說明。假如你是乙個公司的老闆,手下有兩名員工 有點少,呵呵 小張和小王。你給了小王乙個這樣的特權 如果小張玩遊戲,你就可以扣小王500元錢。這就是現實中的委託。在寫程式中,程式設計師就是老闆,小張和小王就是兩個物件。小張玩遊戲是乙個方法,小張還有乙個遊戲事件,他玩遊戲激發這個事件。...