理論知識:
1. 委託在編譯後會生成乙個繼承自multicastdelegate的類,而這個multicastdelegate又繼承自delegate。在delegate內部,維護了乙個委託鍊錶,鍊錶上的每乙個元素為乙個只包含乙個目標方法的委託物件。而通過delegate基類的getinvocationlist()靜態方法,可以獲得這個委託鍊錶。隨後便利這個鍊錶,通過鍊錶中的每乙個委託物件來呼叫方法,這樣就可以分別獲得每乙個方法的返回值
2. delegate基類中的dynamicinvoke()方法:
public object dynamicinvoke(params object args)
這是呼叫委託最通用的方法了,適用於所有型別的委託。它接受的引數為 params object ,也就是說它可以將任意型別作為引數,並返回單個object物件。
如下是乙個通用的呼叫委託鍊錶中方法的方法:
1private
static list fireevent(delegate del, params
object
args)216
}17catch
(exception e)
182122}
23}2425
return
objlst;
26 }
返回值和異常列舉常量
public class r extends hashmap public static r error public static r error string msg public static r error int code,string msg public static r ok str...
C 認識委託2(無返回值和引數的委託)
using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace examples public static void p...
返回值還引數 獲取函式的引數數量和返回值型別
有的時候,我們由於某一些特殊的需求,希望獲取乙個函式的返回值型別,或者是引數數量,可以借助模板來實現。假如我們有乙個函式 int f double,float 當我們需要獲取返回值型別的時候,我們首先宣告乙個模板函式。template r getretvalue r args.這個函式不需要被實現,...