程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 《Effective C#》:用委托實現回調(2)

《Effective C#》:用委托實現回調(2)

編輯:關於C語言

另一個問題,就是委托執行的返回值,當綁定多個函數,委托執行的返回值是最後一個綁定函數執行後的返回值,那麼通過這個值去做判斷將會是不正確的。

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

如何去使用委托,很多人看了書上的例子,也知道委托的意義,但是無法把它和實際應用進行結合。那麼在使用委托的時候,首先要明白幾個問題,等各個問題清楚了,委托原型也就自然出來了。

需要分析清楚的問題有如下幾點。

問題一,傳遞信息是什麼,傳遞的時機是否固定,一次傳遞還是多次傳遞;

問題二,用委托是否合適;

問題三,哪一方是委托的調用端,而哪一方是委托的初始端;

問題四,委托的初始化放在哪裡比較合適。

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

對於問題二來說,很多人可能就不解了。沒錯,委托是可以降低類型之間的耦合性,但是能起到這種作用的並不是只有委托這一種方法。很多情況下,用重載構造函數即可以達到這一目的,因此想問題的時候,不能局限於此。例如,很多人都做過彈出一個單獨窗體對某一條記錄進行修改,這裡用委托可以實現,但是考慮到DataRow屬於引用類型,而這個窗體脫離了數據記錄就失去了意義,因此可以重載構造函數,在初始化窗體的時候,把記錄傳遞給窗體就行了。相對而言,後者會更簡單直接些。

有了前兩個問題的分析,不少人在寫委托的時候,會把順序寫反了,因此程序執行的效果並不是設想中的那樣,這一點要尤為注意。

對於第四個問題來說,可以借鑒窗體的控件事件初始化部分代碼,即委托的初始化采取就近原則,不過這不是唯一初始化的地方,這樣寫只是便於防止漏寫。

好了,對於委托大致說這麼多,希望對大家有所幫助。

返回教程目錄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved