泛型委託匿名方法

2021-05-22 02:12:42 字數 849 閱讀 2812

出現了乙個這樣的問題,泛型委託使用匿名方法的時候指定泛型型別的問題。

我想在試用匿名方法的時候自己為泛型委託指定泛型的型別,但是嘗試之後,發現直接使用delegate時,沒有辦法實現。

例子如下:

int nums=;

string str=string.join(",",array.convertall(nums,delegate(int p)));

string str=string.join(",",array.convertall(nums,new converter(delegate(int p)));

上邊的兩個表示式的意思是一樣的,只是下邊的表示式為泛型方法及委託手動指定了型別,而上邊的那個是依賴於編譯器的自動推斷的。

可以看到,下邊converter委託的呼叫比較麻煩,我最初嘗試的是想用匿名方法來呼叫委託即上邊的那種方式:

delegate(int p)

這種呼叫方法沒有為泛型指定型別,不過編譯器是可以推斷出的。我想在這種方式的基礎上為泛型委託手動指定型別:

問題出現了,這種方式下,編譯器不允許這樣為泛型委託指定型別。

我最初是想當然的以為在delegate後邊指定:delegate(int p)

當然這種方法是錯誤的了。

這是個簡單的例子,泛型的型別可以自動推測出來。

但是有的情況下,泛型的型別編譯器並不能準確推斷出來,例如 c#編譯器對泛型型別推斷的奇怪問題 中所描述的例子,這些情況下編譯器的推斷不一定正確,需要我們自己手動來指定了。

自己指定就自己指定吧,但是我想採用一種簡單的方法,就是匿名方法上指定泛型型別,卻無法實現,只能通過new 乙個新的委託的方式才可以了。

感覺應該在delegate上允許指定型別才合適吧

泛型類,泛型方法,泛型委託的定義方法

今天看書,學習到了泛型類,泛型方法及泛型委託,做乙個簡單的總結,僅涉及泛型類,泛型方法及泛型委託的定義方法。1.泛型類 泛型類的定義與普通類的定義類似,只是增加了泛型型別 的宣告。泛型型別可以作為類中成員變數的型別,也可以作為成員方法的引數型別或方法返回值型別。class examplegeneri...

泛型 二 泛型委託

using system using system.collections.generic using system.linq using system.text namespace 泛型委託 public event stackeventhandler,stackeventargs stackev...

C 學習日記30 泛型類 泛型方法 泛型委託

泛型允許您延遲編寫類或方法中的程式設計元素的資料型別的規範,直到實際在程式中使用它的時候。換句話說,在宣告類或方法的時候由於不知道使用者要傳入什麼樣型別的引數,所以在傳入型別的地方 挖乙個坑 使用它的時候我們再用具體資料型別填上。根據前面所學知識我們定義乙個類 class data 此時n data...