List<T>.AsReadOnly Método

Definição

Retorna um wrapper ReadOnlyCollection<T> somente leitura para a coleção atual.

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

Retornos

Um objeto que atua como um wrapper somente leitura em torno do List<T> atual.

Exemplos

O exemplo a seguir demonstra o AsReadOnly método. Um List<T> de cadeias de caracteres com uma capacidade de 4 é criado, pois o tamanho final da lista é conhecido por ser exatamente 4. A lista é preenchida com quatro cadeias de caracteres e o AsReadOnly método é usado para obter uma implementação de interface genérica somente IList<T> leitura que encapsula a lista original.

Um elemento da lista original é definido como "Coelophysis" usando a Item[] propriedade (o indexador em C#) e o conteúdo da lista somente leitura é exibido novamente para demonstrar que é apenas um wrapper para a lista original.

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
 */

Comentários

Para evitar modificações no objeto , exponha-o List<T> somente por meio desse wrapper. Um ReadOnlyCollection<T> objeto não expõe métodos que modificam a coleção. No entanto, se forem feitas alterações no objeto subjacente List<T> , a coleção somente leitura refletirá essas alterações.

Este método é uma operação O(1).

Aplica-se a

Produto Versões
.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