「泛用方法」甚麼鬼(自己亂取)?以往我們都只用 泛型,哪來這東西。
先來個示意
是的,聰明的你,已經看出來。(我都貼一些粗淺的東西)
某些時候我們可能需要定義並使用方法來處理不同資料型別的項目,若是使用 System.Object,
又需負擔型別檢查與效能,這時後也許可以考慮使用泛用方法。
1 |
int [] IntArray = { 1, 12, 5, 0, 78, 21 }; |
2 |
Sort< int >(IntArray); |
1 |
string [] arrNames = { "C" , "A" , "E" }; |
2 |
Sort< string >(arrNames); |
型別推斷
01 |
//泛用方法 |
02 |
T Compare (T arg1,Targ2){ |
03 |
... |
04 |
} |
05 |
|
06 |
//沒有錯誤 |
07 |
//推斷出型別引數 T 為 int |
08 |
Compare(100,65); |
09 |
|
10 |
//錯誤 |
11 |
//無法推斷出型別 |
12 |
Compare(2, "R" ); |
另外對於陣列,維度數目不同也是會失敗
1 |
void Demo (T[] arg){ |
2 |
... |
3 |
} |
4 |
|
5 |
void CallDemo(){ |
6 |
int [,] MyArray; |
7 |
Demo(MyArray); |
8 |
} |
注意:
- 我們可以省略所有的型別引數來叫用型別推斷。如果提供了一個型別引數,就必須提供所有的。
- 只有泛用方法才支援型別推斷。不可在 類別、結構、介面、委派上叫用型別推斷。