List<T>.AsReadOnly Methode

Definition

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

public:
 System::Collections::ObjectModel::ReadOnlyCollection<T> ^ AsReadOnly();
public System.Collections.ObjectModel.ReadOnlyCollection<T> AsReadOnly ();
member this.AsReadOnly : unit -> System.Collections.ObjectModel.ReadOnlyCollection<'T>
Public Function AsReadOnly () As ReadOnlyCollection(Of T)

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.

using namespace System;
using namespace System::Collections::Generic;

void main()
{
    List<String^>^ dinosaurs = gcnew List<String^>(4);

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

    dinosaurs->Add("Tyrannosaurus");
    dinosaurs->Add("Amargasaurus");
    dinosaurs->Add("Mamenchisaurus");
    dinosaurs->Add("Deinonychus");

    Console::WriteLine();
    for each(String^ dinosaur in dinosaurs)
    {
        Console::WriteLine(dinosaur);
    }

    Console::WriteLine("\nIList<String^>^ roDinosaurs = dinosaurs->AsReadOnly()");
    IList<String^>^ roDinosaurs = dinosaurs->AsReadOnly();

    Console::WriteLine("\nElements in the read-only IList:");
    for each(String^ dinosaur in roDinosaurs)
    {
        Console::WriteLine(dinosaur);
    }

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

    Console::WriteLine("\nElements in the read-only IList:");
    for each(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
 */
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
 */
Imports System.Collections.Generic

Public Class Example

    Public Shared Sub Main()

        Dim dinosaurs As New List(Of String)(4)

        Console.WriteLine(vbLf & "Capacity: {0}", dinosaurs.Capacity)

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

        Console.WriteLine()
        For Each dinosaur As String In dinosaurs
            Console.WriteLine(dinosaur)
        Next

        Console.WriteLine(vbLf & _
            "Dim roDinosaurs As IList(Of String) = dinosaurs.AsReadOnly")
        Dim roDinosaurs As IList(Of String) = dinosaurs.AsReadOnly

        Console.WriteLine(vbLf & "Elements in the read-only IList:")
        For Each dinosaur As String In roDinosaurs
            Console.WriteLine(dinosaur)
        Next

        Console.WriteLine(vbLf & "dinosaurs(2) = ""Coelophysis""")
        dinosaurs(2) = "Coelophysis"

        Console.WriteLine(vbLf & "Elements in the read-only IList:")
        For Each dinosaur As String In roDinosaurs
            Console.WriteLine(dinosaur)
        Next

    End Sub
End Class

' This code example produces the following output:
'
'Capacity: 4
'
'Tyrannosaurus
'Amargasaurus
'Mamenchisaurus
'Deinonychus
'
'Dim roDinosaurs As IList(Of String) = 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: