關於C 多播委託的若干問題

2021-04-13 09:57:07 字數 585 閱讀 8091

1. 多播委託呼叫的順序問題。

查閱msdn英文和中文分別說"in order"和"按順序呼叫",但是都沒有明確說明是按照什麼順序。

(這樣很容易讓人理解是按照加入委託方法鏈的順序)

在《c#高階程式設計》一書中,在6.2.3多播委託一節最後一段寫道:

"如果使用多播委託,就應注意對同乙個委託呼叫方法鏈的順序並未正式定義,因此應避免編寫依賴於以任意特定順序呼叫方法的**。"

這裡是明確說明了多播委託的呼叫順序是不確定的。

在網上請教一些人,有人回答說"按順序呼叫"僅僅表示都會被呼叫到,但至於什麼先後順序是不可知的。

而我自己寫**測試,測試的結果目前都是呼叫順序和加入委託的順序相同的。但是不排除有不同的時候。

2. 多播委託的返回值

多播委託是可以有返回值的,不用必須為void

在msdn上有講"如果委託具有返回值和/或輸出引數,它將返回最後呼叫的方法的返回值和引數。"

而我自己**測試也是正確的。

而且關於多播委託的異常處理,msdn寫:

"如果任一方法引發了異常,而在該方法內未捕獲該異常,則該異常將傳遞給委託的呼叫方,並且不再對呼叫列表中後面的方法進行呼叫。"

關於fusionchart的若干問題

最近在做的乙個專案用到fusionchart這個外掛程式,期間遇到了一些問題,特整理出來以備忘,更與後來人分享 1 關於傳參。一般我們都是通過setdataurl url 來調後台的服務類獲取所要展現的資料,可是我們經常會在url中通過 傳多個查詢引數,這時一般都會出錯。這是因為編碼的問題,要通過e...

C 多播委託

昨天第一次學到了多播委託,記錄一下最簡單的用法。顧名思義,多播委託就像廣播一樣,由乙個委託例項引用多個方法。通過 和 運算子實現對引用方法的增加和減少。1 static void main string args 211 public static void test1 1215 public st...

C 多播委託

乙個委託呼叫多個方法 例如 action a test1 a test2 增加乙個新方法,按順序執行,只能得到最後乙個方法的值 a test2 減去乙個方法 當a為空時會報錯,如果乙個方法出錯,其餘不會呼叫 取得乙個多播委託的所有方法 getinvocationlist 返回值為delegate 陣...