Freigeben über


Generics und Arrays (C#-Programmierhandbuch)

Eindimensionale Arrays, die eine untere Grenze von Null aufweisen, implementieren IList<T>automatisch. Auf diese Weise können Sie generische Methoden erstellen, die denselben Code zum Durchlaufen von Arrays und anderen Sammlungstypen verwenden können. Diese Technik ist in erster Linie für das Lesen von Daten in Sammlungen nützlich. Die IList<T> Schnittstelle kann nicht zum Hinzufügen oder Entfernen von Elementen aus einem Array verwendet werden. Eine Ausnahme wird ausgelöst, wenn Sie versuchen, eine IList<T> Methode wie RemoveAt in einem Array in diesem Kontext aufzurufen.

Im folgenden Codebeispiel wird veranschaulicht, wie eine einzelne generische Methode, die einen IList<T> Eingabeparameter verwendet, sowohl eine Liste als auch ein Array durchlaufen kann, in diesem Fall ein Array mit ganzen Zahlen.

class Program
{
    static void Main()
    {
        int[] arr = [0, 1, 2, 3, 4];
        List<int> list = new List<int>();

        for (int x = 5; x < 10; x++)
        {
            list.Add(x);
        }

        ProcessItems<int>(arr);
        ProcessItems<int>(list);
    }

    static void ProcessItems<T>(IList<T> coll)
    {
        // IsReadOnly returns True for the array and False for the List.
        System.Console.WriteLine
            ("IsReadOnly returns {0} for this collection.",
            coll.IsReadOnly);

        // The following statement causes a run-time exception for the
        // array, but not for the List.
        //coll.RemoveAt(4);

        foreach (T item in coll)
        {
            System.Console.Write(item?.ToString() + " ");
        }
        System.Console.WriteLine();
    }
}

Siehe auch