在C#中,泛型類是一種可以操作多種數據類型的類。這使得你可以編寫更靈活、可重用的代碼。泛型類通過在類名后使用尖括號<>和類型參數來定義。類型參數可以是具體的類型,如int或string,也可以是其他泛型類型,甚至是其他泛型類的類型參數。
下面是一些使用泛型類的示例:
示例 1:簡單的泛型類
這個例子中,我們創建一個名為Box的泛型類,它可以存儲任何類型的對象。
public class Box<T>
{
private T _content;
public Box(T content)
{
_content = content;
}
public T Content
{
get { return _content; }
set { _content = value; }
}
}
使用這個類的示例:
Box<int> intBox = new Box<int>(10);
Box<string> stringBox = new Box<string>("Hello, World!");
Console.WriteLine(intBox.Content); ? ?// 輸出: 10
Console.WriteLine(stringBox.Content); // 輸出: Hello, World!
示例 2:具有多個類型參數的泛型類
你可以定義一個擁有多個類型參數的泛型類。例如,一個可以比較兩個不同類型對象的類。
public class Comparer<T, U> where T : IComparable<U>
{
public int Compare(T a, U b)
{
return a.CompareTo(b);
}
}
使用這個類的示例:
Comparer<int, int> intComparer = new Comparer<int, int>();
Console.WriteLine(intComparer.Compare(5, 10)); // 輸出: -1 (因為5小于10)
示例 3:使用泛型約束
在定義泛型類時,你可以指定類型參數必須滿足的約束。例如,你可以要求類型參數必須是類、結構體、具有特定方法的類或實現特定接口的類。
public interface IPrintable { void Print(); }
public class Printer<T> where T : IPrintable // T必須是IPrintable類型或其子類
{
public void PrintObject(T obj)
{
obj.Print();
}
}
使用這個類的示例:
class MyClass : IPrintable?
{?
public void Print()?
{?
Console.WriteLine("Printing from MyClass");?
}?
}?
Printer<MyClass> printer = new Printer<MyClass>();?
printer.PrintObject(new MyClass()); // 輸出: Printing from MyClass?
通過這些示例,你可以看到如何在C#中使用泛型類來創建靈活、可重用的代碼。