事件或委託獲取多個返回值和異常處理

2022-03-28 15:13:09 字數 694 閱讀 8658

理論知識:

1.  委託在編譯後會生成乙個繼承自multicastdelegate的類,而這個multicastdelegate又繼承自delegate。在delegate內部,維護了乙個委託鍊錶,鍊錶上的每乙個元素為乙個只包含乙個目標方法的委託物件。而通過delegate基類的getinvocationlist()靜態方法,可以獲得這個委託鍊錶。隨後便利這個鍊錶,通過鍊錶中的每乙個委託物件來呼叫方法,這樣就可以分別獲得每乙個方法的返回值

2.  delegate基類中的dynamicinvoke()方法:

public object dynamicinvoke(params object args)

這是呼叫委託最通用的方法了,適用於所有型別的委託。它接受的引數為 params object ,也就是說它可以將任意型別作為引數,並返回單個object物件。

如下是乙個通用的呼叫委託鍊錶中方法的方法:

1

private

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.這個函式不需要被實現,...