C# | Creación de un contenedor de solo lectura para ArrayList – Part 1

El método ArrayList.ReadOnly(ArrayList) se usa para obtener un contenedor ArrayList de solo lectura.

Sintaxis:

public static System.Collections.ArrayList ReadOnly(System.Collections.ArrayList list);

Aquí, la lista es la ArrayList que se va a envolver.

Valor de retorno: Devuelve un ArrayList Wrapper de solo lectura alrededor de la lista .

Excepción: este método devuelve ArgumentNullException si la lista es nula.

Los siguientes programas ilustran el uso del método mencionado anteriormente:

Ejemplo 1:

// C# code to create a read-only
// wrapper for the ArrayList
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an ArrayList
        ArrayList myList = new ArrayList();
  
        // Adding elements to ArrayList
        myList.Add("Geeks");
        myList.Add("for");
        myList.Add("Geeks");
        myList.Add("Noida");
        myList.Add("Geeks Classes");
        myList.Add("Delhi");
  
        // Creating a Read-Only packing
        // around the ArrayList
        ArrayList myList2 = ArrayList.ReadOnly(myList);
  
        // --------- Using IsReadOnly Property
  
        // print the status of both ArrayList
        Console.WriteLine("myList ArrayList is {0}.",
                    myList.IsReadOnly ? "read-only" : 
                                    "not read-only");
  
        Console.WriteLine("myList2 ArrayList is {0}.",
                    myList2.IsReadOnly ? "read-only" : 
                                     "not read-only");
    }
}

Producción:

myList ArrayList is not read-only.
myList2 ArrayList is read-only.

Ejemplo 2:

// C# code to create a read-only 
// wrapper for the ArrayList
using System; 
using System.Collections; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating an ArrayList 
        ArrayList myList = new ArrayList(); 
  
        // Adding elements to ArrayList 
        myList.Add("C"); 
        myList.Add("C++"); 
        myList.Add("Java"); 
        myList.Add("C#"); 
        myList.Add("Python"); 
          
        Console.WriteLine("Before Wrapping: ");
          
        // Displaying the elements in the ArrayList 
        foreach(string str in myList) 
        { 
            Console.WriteLine(str); 
        } 
          
      
        // Creating a Read-Only packing 
        // around the ArrayList 
        ArrayList myList2 = ArrayList.ReadOnly(myList);
          
        Console.WriteLine("After Wrapping: ");
          
        // Displaying the elements 
        foreach(string str in myList2) 
        { 
            Console.WriteLine(str); 
        } 
          
        Console.WriteLine("Trying to add new element into myList2:");
          
        // it will give error
        myList2.Add("HTML");
  
      
    } 
} 

Producción:

Before Wrapping: 
C
C++
Java
C#
Python
After Wrapping: 
C
C++
Java
C#
Python
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.
en System.Collections.ArrayList+ReadOnlyArrayList.Add

Explicación: En el programa anterior, puede agregar o eliminar elementos de myList , es decir, ArrayList original, que se reflejará en la colección de solo lectura.

Nota:

  • Para evitar cualquier modificación a la lista , exponga la lista solo a través de este contenedor.
  • 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 *