C# | Creating a read-only wrapper for the ArrayList Last Updated : 11 Jul, 2025 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: https://learn.microsoft.com/en-us/dotnet/api/system.collections.arraylist.readonly?view=netframework-4.7.2#System_Collections_ArrayList_ReadOnly_System_Collections_ArrayList_ Create Quiz Comment K Kirti_Mangal Follow 0 Improve K Kirti_Mangal Follow 0 Improve Article Tags : C# CSharp-method CSharp-Collections-Namespace CSharp-Collections-ArrayList Explore IntroductionC# Tutorial 2 min read Introduction to .NET Framework 6 min read C# .NET Framework (Basic Architecture and Component Stack) 6 min read C# Hello World 2 min read Common Language Runtime (CLR) in C# 4 min read FundamentalsC# Identifiers 2 min read Data Types in C# 6 min read C# Variables 4 min read C# Literals 5 min read Operators in C# 7 min read C# Keywords 5 min read Control StatementsC# Decision Making (if, if-else, if-else-if ladder, nested if, switch, nested switch) 5 min read C# Switch Statement 4 min read Loops in C# 4 min read C# Jump Statements (Break, Continue, Goto, Return and Throw) 4 min read OOP ConceptsClass and Objects in C# 4 min read Constructors in C# 5 min read C# Inheritance 3 min read Encapsulation in C# 2 min read C# Abstraction 4 min read MethodsMethods in C# 4 min read Method Overloading in C# 4 min read Method Parameters in C# 4 min read Method Overriding in C# 7 min read Anonymous Method in C# 2 min read ArraysArrays in C# 6 min read Jagged Arrays in C# 4 min read Array Class in C# 5 min read How to Sort an Array in C# | Array.Sort() Method Set - 1 8 min read How to find the rank of an array in C# 2 min read ArrayListArrayList in C# 6 min read ArrayList Class in C# 4 min read C# | Array vs ArrayList 2 min read StringStrings in C# 6 min read C# Verbatim String Literal - @ 5 min read C# String Class 9 min read C# StringBuilder 2 min read C# String vs StringBuilder 3 min read TupleC# Tuple 7 min read C# Tuple Class 3 min read C# ValueTuple 7 min read C# ValueTuple Struct 4 min read IndexersC# Indexers 5 min read C# Multidimensional Indexers 5 min read C# - Overloading of Indexers 3 min read Like