1.C#中的事件和委托的作用?
事件代表一個組件能夠被關注的一種信號,比如你的大腸會向你發出想拉屎的信號,你就可以接收到上廁所。
委托是可以把一個過程封裝成變量進行傳遞並且執行的對象,比如你上蹲坑和上坐馬桶拉屎的方式是不一樣的,但是你的大腦不需要知道兩種方式的不同,只需要在蹲坑的時候獲取身體用於蹲位姿勢的委托進行調用拉屎,在坐馬桶的時候獲取坐姿的委托進行調用拉屎。
2.他們之間的關系?
委托是一種類型,事件是一種成員,就相當於public int Age {get;set;}這個屬性中,int就是類型,Age是一個成員,public event EventHandler Push;這個事件中EventHandler就是委托類型,Push是事件他是一個成員。
3.和什麼情況使用委托和事件?
事件是組件中的抽象概念,同樣包括狀態和操作也是組件中的概念,對應到C#裡面就是屬性和方法。所以像控件之類的組件都會有事件。而委托代表一個代碼的執行過程,C#3.0引入linq以後,用的就非常頻繁了。
4.但是用事件的方式來調用的話有什麼好處?
事件是一種封裝,就好像屬性會封裝字段一樣,可以把定義和實現隔離開來,給你舉個例子就是DateTime實際上你看那麼多屬性,其實裡面只有一個字段存儲時間,各種日期啊年啊屬性都是根據這個時間算出來的。事件也把內部類型為一個委托的字段封裝起來,這樣在類的外部就只能使用事件來注冊或者注銷事件關注,而不能引發事件。就好像你拉不拉屎不由其他人控制一樣。
5.添加了委托一定要再定義事件來調用麼?
看情況,你可以不用屬性封裝字段,但是在代碼設計上來說,或者面向組件設計上來說,封裝是一種設計原則,你學過設計模式,或者參與過大型系統的設計就會很容易理解這點。
6/什麼情況下只要使用委托就可以,什麼情況下必須配合事件使用?
一般情況下建立組件模型都使用事件