Auf Englisch lesen

Freigeben über


List<T>.AsReadOnly Methode

Definition

Gibt einen schreibgeschützten ReadOnlyCollection<T>-Wrapper für die aktuelle Auflistung zurück.

C#
public System.Collections.ObjectModel.ReadOnlyCollection<T> AsReadOnly ();

Gibt zurück

Ein Objekt, das als schreibgeschützter Wrapper des aktuellen List<T>-Objekts fungiert.

Beispiele

Das folgende Beispiel veranschaulicht die AsReadOnly Methode. Eine List<T> von Zeichenfolgen mit einer Kapazität von 4 wird erstellt, da die endgültige Größe der Liste bekanntlich genau 4 ist. Die Liste wird mit vier Zeichenfolgen aufgefüllt, und die AsReadOnly -Methode wird verwendet, um eine schreibgeschützte IList<T> generische Schnittstellenimplementierung abzurufen, die die ursprüngliche Liste umschließt.

Ein Element der ursprünglichen Liste wird mithilfe der Item[] -Eigenschaft (der Indexer in C#) auf "Coelophysis" festgelegt, und der Inhalt der schreibgeschützten Liste wird erneut angezeigt, um zu zeigen, dass es sich nur um einen Wrapper für die ursprüngliche Liste handelt.

C#
using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        List<string> dinosaurs = new List<string>(4);

        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

        dinosaurs.Add("Tyrannosaurus");
        dinosaurs.Add("Amargasaurus");
        dinosaurs.Add("Mamenchisaurus");
        dinosaurs.Add("Deinonychus");

        Console.WriteLine();
        foreach(string s in dinosaurs)
        {
            Console.WriteLine(s);
        }

        Console.WriteLine("\nIList<string> roDinosaurs = dinosaurs.AsReadOnly()");
        IList<string> roDinosaurs = dinosaurs.AsReadOnly();

        Console.WriteLine("\nElements in the read-only IList:");
        foreach(string dinosaur in roDinosaurs)
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\ndinosaurs[2] = \"Coelophysis\"");
        dinosaurs[2] = "Coelophysis";

        Console.WriteLine("\nElements in the read-only IList:");
        foreach(string dinosaur in roDinosaurs)
        {
            Console.WriteLine(dinosaur);
        }
    }
}

/* This code example produces the following output:

Capacity: 4

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus

IList<string> roDinosaurs = dinosaurs.AsReadOnly()

Elements in the read-only IList:
Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus

dinosaurs[2] = "Coelophysis"

Elements in the read-only IList:
Tyrannosaurus
Amargasaurus
Coelophysis
Deinonychus
 */

Hinweise

Um Änderungen am List<T> Objekt zu verhindern, machen Sie es nur über diesen Wrapper verfügbar. Ein ReadOnlyCollection<T> -Objekt macht keine Methoden verfügbar, die die Auflistung ändern. Wenn jedoch Änderungen am zugrunde liegenden List<T> Objekt vorgenommen werden, spiegelt die schreibgeschützte Auflistung diese Änderungen wider.

Bei dieser Methode handelt es sich um einen O(1)-Vorgang.

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0