.NET中的泛型功能相當強大,它對實現類型安全和代碼重用都有很大的作用。現在將泛型的知識整理如下:
1、概念:泛型是將類型作爲參數傳遞給類、方法、委託;
2、泛型的類型約束:是對參數類型進行約束限制,在需要使用參數類型的特定功能時,約束是必須的。如在泛型類中,需要使用參數類的一個方法時,則必須指定這個參數類是實現了一個特定的接口或源自具體的基類。約束的語法爲:public class Master<T> where T : Employee{}
在應用 where T : class 約束時,避免對類型參數使用 == 和 != 運算符,因爲這些運算符僅測試引用同一性而不測試值相等性。即使在用作參數的類型中重載這些運算符也是如此。下面的代碼說明了這一點;即使 String 類重載 == 運算符,輸出也爲 false。
public static void OpTest<T>(T s, T t) where T : class
{
System.Console.WriteLine(s == t);
}
static void Main()
{
string s1 = "foo";
System.Text.StringBuilder sb = new System.Text.StringBuilder("foo");
string s2 = sb.ToString();
OpTest<string>(s1, s2);
}
3、泛型類的繼承:原則:要求子類對應於父類的泛型參數更具體(個人理解),如父類型泛型參數,而子類沒有(需要顯示指定)、父類對泛型參數有約束而子類沒有、父類的泛型參數比子類多,這些都是錯誤的,這時,子類可以從封閉式(將泛型參數指定爲一個具體的類型)基類繼承、