程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 委托又給我惹麻煩了————記委托鏈的取消注冊、獲取返回值

委托又給我惹麻煩了————記委托鏈的取消注冊、獲取返回值

編輯:C#入門知識

  今天改bug碰到了一個問題,有多個方法注冊到了一個事件裡去,而這些方法本身又有點兒互斥,因而造成了bug,哥調試半天才發現,郁悶至極,遂復習了以前的知識並進行適當延伸,再將成果記錄及分享之,以防他日再犯。
  顯然這是一個委托鏈,那麼首先就來回顧下委托鏈的最初寫法了,這裡引用上一篇 委托的N種寫法,你喜歡哪種? 的部分代碼。

  定義委托:

  PlusStringHandle( x,  y);

          plusString( x,  x +

 

            PlusStringHandle handle = +=+= str = handle(, , handle.Method.Name);

            PlusStringHandle handle = +=+=+=-=-= str = handle(, , handle.Method.Name);

  繼續修改Main方法:

            PlusStringHandle handle = +=+=+=
            handle = testString;  

             str = handle(, , handle.Method.Name);

=======================分割線 =============================

 

  以下繼續來探討下委托鏈獲取的返回值,如上文所寫,直接調用委托只能獲取最後一次注冊的方法的返回值,那麼假如說要獲取所有已注冊的方法的返回值則有兩種方式:

            PlusStringHandle handle = +=+=+= str = handle(, = (PlusStringHandle d , d.Method.Name, d(,  (Delegate d 
                Console.WriteLine(, d.Method.Name, d.DynamicInvoke(, 

  

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