delegate學習筆記

來源:互聯網
上載者:User
        說說委託能做些什麼,先來分析一下事件,這也是委託用得最多的地方。一般事件的初始化需要綁定一個事件處理函數,那麼當事件觸發的時候,處理函數會被調用,也就是說在事件處理函數可以明確的知道,此事件是被觸發了。例如,點擊表單的上的Button,它會把Click事件反饋給表單。很明顯,委託是處理對象之間的資訊互動。除了事件外,委託的大多用處都和此類似,那麼這樣使用的好處在於降低對象之間耦合性。


         委託不同於以前函數指標的地方在於,可以綁定多個委託函數。

public delegate void HelloHandler( string Msg );

private void WriteHello1( string sMsg )
{
 Debug.WriteLine( "WriteHello1:" + sMsg );
}

private void WriteHello2( string sMsg )
{
 Debug.WriteLine( "WriteHello2:" + sMsg );
}

// delegate sample

HelloHandler hHello = new HelloHandler( WriteHello1 );
hHello += new HelloHandler( WriteHello2 );
hHello( "Hello World!" );

         對於委託綁定多個函數,要注意的是不要把異常擴散出來,其次委託類型的傳回值為“void”。

         那麼在使用委託的時候,首先要明白幾個問題,等各個問題清楚了,委託原型也就自然出來了。

  問題一,傳遞資訊是什麼,傳遞的時機是否固定,一次傳遞還是多次傳遞;
  問題二,用委託是否合適;
  問題三,哪一方是委託的調用端,而哪一方是委託的初始端;
  問題四,委託的初始化放在哪裡比較合適。

  問題一是關鍵,這首先決定是否要使用委託來實現,其次如果要使用委託,那麼需要確定委託函數類型。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.