C# | Creating a readonly wrapper for the ArrayList (original) (raw)

Last Updated : 01 Feb, 2019

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:

Reference:

Similar Reads