Open In App

C# | Creating a read-only wrapper for the ArrayList

Last Updated : 01 Feb, 2019
Comments
Improve
Suggest changes
Like Article
Like
Report
ArrayList.ReadOnly(ArrayList) Method is used to get a read-only ArrayList wrapper. Syntax:
public static System.Collections.ArrayList ReadOnly(System.Collections.ArrayList list);
Here, the list is the ArrayList which is to be wrapped. Return Value: It returns a read-only ArrayList Wrapper around the list. Exception: This method returns the ArgumentNullException if the list is null. Below programs illustrate the use of above-discussed method: Example 1: CSharp
// 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");
    }
}
Output:
myList ArrayList is not read-only.
myList2 ArrayList is read-only.
Example 2: CSharp
// 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");

    
    } 
} 
Output:
Before Wrapping: 
C
C++
Java
C#
Python
After Wrapping: 
C
C++
Java
C#
Python
Trying to add new element into myList2:
Runtime Error:
Unhandled Exception: System.NotSupportedException: Collection is read-only. at System.Collections.ArrayList+ReadOnlyArrayList.Add
Explanation: In the above program, you can add or remove the elements from the myList i.e original ArrayList which will reflect into the read-only collection. Note:
  • To prevent any modifications to list, expose list only through this wrapper.
  • A collection that is read-only is simply a collection with a wrapper that prevents modifying the collection. If changes are made to the underlying collection, the read-only collection reflects those changes.
  • This method is an O(1) operation.
Reference:

Next Article

Similar Reads