1. 程式人生 > >C# 委託和事件的聯絡和區別

C# 委託和事件的聯絡和區別

聯絡:事件是一種特殊的委託,均類似於C中的函式指標,將一個方法通過引數傳到別的方法中,通過別的方法來呼叫。

區別:體現在封裝性。事件是訂閱釋出的機制。

委託可以在類的外部直接賦值,直接呼叫。即可以使用:

A a = new A();  

B b = new B();  

a.委託名 = b.方法名;   // 賦值

a.委託名();  // 呼叫

事件不可以在類的外部直接賦值,且不可以直接呼叫。只可以使用:

class A{

   觸發方法(){

        事件名();

   }

}

A a = new A();  

B b = new B();  

a.事件名 += b.方法名;  // 這裡只能用+=,不能用=,相當於是對a釋出的事件的訂閱,而不是修改a的事件。

a.觸發方法(); 

// 不可以使用 a.事件名(); 即事件只能是A的內部發起的