C# | Creación de un contenedor de solo lectura para la Lista

El método List<T>.AsReadOnly se usa para obtener un contenedor ReadOnlyCollection<T> de solo lectura para la colección actual.

Sintaxis:

público System.Collections.ObjectModel.ReadOnlyCollection AsReadOnly();

Valor de retorno: devuelve un objeto que actúa como un contenedor de solo lectura alrededor de la List<T> actual .

Ejemplo:

// C# code to create a read-only
// wrapper for the List<T>
using System;
using System.Collections;
using System.Collections.Generic;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an List<T> of Integers
        List<int> firstlist = new List<int>();
  
        // Adding elements to List
        firstlist.Add(1);
        firstlist.Add(2);
        firstlist.Add(3);
        firstlist.Add(4);
        firstlist.Add(5);
        firstlist.Add(6);
        firstlist.Add(7);
  
        Console.WriteLine("Before Wrapping: ");
  
        // Displaying the elements in the List
        foreach(int i in firstlist)
        {
            Console.WriteLine(i);
        }
  
        // Creating a Read-Only packing
        // around the List<T>
        IList<int> mylist2 = firstlist.AsReadOnly();
  
        Console.WriteLine("After Wrapping: ");
  
        // Displaying the elements
        foreach(int m in mylist2)
        {
            Console.WriteLine(m);
        }
  
        Console.WriteLine("Trying to add new element into mylist2:");
  
        // it will give error
        mylist2.Add(8);
    }
}

Producción:

Before Wrapping: 
1
2
3
4
5
6
7
After Wrapping: 
1
2
3
4
5
6
7
Trying to add new element into mylist2:

Error de tiempo de ejecución:

Excepción no controlada:
System.NotSupportedException: la colección es de solo lectura.

Nota:

  • Una colección que es de solo lectura es simplemente una colección con un contenedor que impide modificar la colección. Si se realizan cambios en la colección subyacente, la colección de solo lectura refleja esos cambios.
  • Este método es una operación O(1).

Referencia:

Publicación traducida automáticamente

Artículo escrito por Kirti_Mangal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *