標籤:ons c# line 引用 [] 類型 lin ati adk
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.Write(a);
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 泛型