1. 程式人生 > >C#2.0 泛型

C#2.0 泛型

2.0 名稱 值類型 調用 派生 約束 wap write 實例化

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 泛型