C#2.0 泛型
1.泛型類
定義:
class Test<T> 註:T是占位符可以隨便寫
{
public T data; 註:定義一個T類型的字段
public Test(T obj) 註:定義一個T類型的方法
{
this.data = obj;
}
}
實例化泛型類
private static void Main(string[] args)
{
Test<int> test = new Test<int>(3);
Console.WriteLine(test.data);
Console.ReadKey();
}
2.泛型方法
定義:
public static void Swap<T>(ref T a, ref T b) 值:定義一個泛型方法,ref 是指引用返回值是否作為調用方欲修改的引用被存儲在本地
{
a = b;
}
private static void Main(string[] args)
{
int a = 1;
int b = 2;
Swap<int>(ref a, ref b); 註:傳遞int類型的兩個值
Console.ReadKey();
}
3.泛型約束
public static void Swap<T>(ref T a, ref T b) where T:struct 註:傳遞類型必須是值類型
{
a = b;
}
public static void Swap<T>(ref T a, ref T b) where T:class註:傳遞類型必須是引用類型
{
a = b;
}
public static void Swap<T>(ref T a, ref T b) where T:new()註:傳遞類型參數必須具有無參數的公共構造函數。當與其他約束一起使用時,new()
{
a = b;
}
public static void Swap<T>(ref T a, ref T b) where T:<基類名>註:傳遞類型參數必須是指定的基類或派生自指定的基類。
{
a = b;
}
public static void Swap<T>(ref T a, ref T b) where T:<接口名稱>註:傳遞類型參數必須是指定的接口或實現指定的接口。可以指定多個接口約束。約束接口也可以是泛型的。
{
a = b;
}
public static void Swap<T>(ref T a, ref T b) where T:U 註:為 T 提供的類型參數必須是為 U 提供的參數或派生自為 U 提供的參數。這稱為裸類型約束。
{
a = b;
}
C#2.0 泛型