C#泛型是什麼意思
在C#中,泛型(Generics)是一種語言特性,它允許你在定義類、結構、接口或方法時使用占位符類型,而不是具體的類型。這些占位符類型在代碼中以類型參數的形式出現,並在使用泛型的類、結構、接口或方法時被具體的類型所替換。
泛型的主要優點是它們可以提高代碼的類型安全性和重用性。因為泛型類、結構、接口或方法在編譯時就知道使用的是哪種類型,所以編譯器可以執行更嚴格的類型檢查,並且可以避免裝箱和拆箱操作,從而提高性能。
下面是一個簡單的泛型類示例:
public class GenericList<T>
{
private T[] items;
private int count;
public GenericList()
{
this.items = new T[4];
}
public void Add(T item)
{
if (count == items.Length)
{
Resize();
}
items[count] = item;
count++;
}
private void Resize()
{
T[] newItems = new T[items.Length * 2];
for (int i = 0; i < count; i++)
{
newItems[i] = items[i];
}
items = newItems;
}
}
在這個例子中,GenericList<T>
類使用了一個類型參數 T
,它可以是任何類型。這意味著你可以創建不同類型的 GenericList
實例,例如 GenericList<int>
、GenericList<string>
或 GenericList<MyClass>
。每個實例都將使用特定的類型 T
,並且只能存儲該類型的元素。
使用泛型時,你需要在類型參數中指定一個或多個類型,這些類型將在使用泛型的類、結構、接口或方法時被替換。例如,你可以這樣使用上面的 GenericList<T>
類:
GenericList<int> intList = new GenericList<int>();
intList.Add(10);
intList.Add(20);
GenericList<string> stringList = new GenericList<string>();
stringList.Add("Hello");
stringList.Add("World");
在這個例子中,intList
是一個 GenericList<int>
的實例,而 stringList
是一個 GenericList<string>
的實例。每個實例都使用不同的類型,並且只能存儲特定類型的元素。