C# | Creating a read-only wrapper for the ArrayList
Last Updated :
11 Jul, 2025
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: