public class GenericList<T>
{
void Add(T input) { }
}
class TestGenericList
{
private class ExampleClass { }
static void Main()
{
GenericList<int> list1 = new GenericList<int>();
GenericList<string> list2 = new GenericList<string>();
GenericList<ExampleClass> list3 = new GenericList<ExampleClass>();
}
}
|
static void Swap<T>(ref T lhs, ref T rhs)
{
T temp;
temp = lhs;
lhs = rhs;
rhs = temp;
}
|
class BaseNode { }
class BaseNodeGeneric<T> { }
class NodeConcrete<T> : BaseNode { }
class NodeClosed<T> : BaseNodeGeneric<int> { }
class NodeOpen<T> : BaseNodeGeneric<T> { }
|
class EmployeeList<T> where T : Employee, IEmployee, System.IComparable<T>, new() {}
|
約束 | 說明 |
---|---|
T:結構web |
類型參數必須是值類型。能夠指定除 Nullable 之外的任何值類型。有關更多信息,請參見使用可空類型(C# 編程指南)。編程 |
T:類數組 |
類型參數必須是引用類型,包括任何類、接口、委託或數組類型。安全 |
T:new()函數 |
類型參數必須具備無參數的公共構造函數。當與其餘約束一塊兒使用時,new() 約束必須最後指定。性能 |
T:<基類名>spa |
類型參數必須是指定的基類或派生自指定的基類。設計 |
T:<接口名稱>orm |
類型參數必須是指定的接口或實現指定的接口。能夠指定多個接口約束。約束接口也能夠是泛型的。對象 |
T:U |
爲 T 提供的類型參數必須是爲 U 提供的參數或派生自爲 U 提供的參數。這稱爲裸類型約束。 |
class List<T>
{
void Add<U>(List<U> items) where U : T {}
}
|
public class SampleClass<T, U, V> where T : V { }
|