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> 的實例。每個實例都使用不同的類型,並且只能存儲特定類型的元素。