C 中的事件和委託

2021-08-19 16:04:29 字數 1140 閱讀 6423

1.c#中的事件和委託的作用?

事件代表乙個元件能夠被關注的一種訊號,比如你的大腸會向你發出想拉屎的訊號,你就可以接收到上廁所。

委託是可以把乙個過程封裝成變數進行傳遞並且執行的物件,比如你上蹲坑和上坐馬桶拉屎的方式是不一樣的,但是你的大腦不需要知道兩種方式的不同,只需要在蹲坑的時候獲取身體用於蹲位姿勢的委託進行呼叫拉屎,在坐馬桶的時候獲取坐姿的委託進行呼叫拉屎。

2.他們之間的關係?

委託是一種型別,事件是一種成員,就相當於public int age 這個屬性中,int就是型別,age是乙個成員,public event eventhandler push;這個事件中eventhandler就是委託型別,push是事件他是乙個成員。

3.什麼情況使用委託和事件?

事件是元件中的抽象概念,同樣包括狀態和操作也是元件中的概念,對應到c#裡面就是屬性和方法。所以像控制項之類的元件都會有事件。而委託代表乙個**的執行過程,c#3.0引入linq以後,用的就非常頻繁了。

4.但是用事件的方式來呼叫的話有什麼好處?

事件是一種封裝,就好像屬性會封裝字段一樣,可以把定義和實現隔離開來,給你舉個例子就是datetime實際上你看那麼多屬性,其實裡面只有乙個字段儲存時間,各種日期啊年啊屬性都是根據這個時間算出來的。事件也把內部型別為乙個委託的字段封裝起來,這樣在類的外部就只能使用事件來註冊或者登出事件關注,而不能引發事件。就好像你拉不拉屎不由其他人控制一樣。

5.新增了委託一定要再定義事件來呼叫麼?

看情況,你可以不用屬性封裝字段,但是在**設計上來說,或者面向元件設計上來說,封裝是一種設計原則,你學過設計模式,或者參與過大型系統的設計就會很容易理解這點。

6.什麼情況下只要使用委託就可以,什麼情況下必須配合事件使用?

一般情況下建立元件模型都使用事件

要理解事件,首先你要清楚理解委託的用處和本質。然後再去**事件。

事件從本質上來說是委託,不過在使用上比委託多了乙個限制,事件只能在定義事件的類內部被呼叫,

而委託可以在任意方法中被呼叫(難就難在理解這句)。

物件導向思想程式設計的乙個特點就是盡可能的在軟體中反應現實世界的關係和特點。

我們基本上可以說:事件是委託,委託是方法指標,在呼叫委託的時候跟呼叫方法是一樣的。

一般來說,這個限制正好用在封裝元件類的時候體現了封裝特性。

C 中的委託和事件

委託類似於c 中的函式指標,c 中的委託申明如下 delegate void mydelegate 只要該委託執行的方法與委託申明的簽名一致,就能呼叫委託來執行該方法,例如在本例中,有個方法為 void method 那麼就可以如下呼叫 mydelegate delegate new mydeleg...

C 中的委託和事件

委託 和 事件在 net framework中的應用非常廣泛,然而,較好地理解委託和事件對很多接觸c 時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,而沒有過去的人每次見到委託和事件就覺得心裡憋得慌,渾身不自在。本文中,我將通過兩個範例由淺入深地講述什麼是委託 為什麼...

C 中的委託和事件

較好地理解委託和事件對很多接觸c 時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,下面的例子如果能很好的理解了,那麼基本的委託和事件就基本有所了解了!namespace 委託和事件 方法三委託的定義 public delegate void greetdelegate...