C# | Creating a read-only wrapper for List Last Updated : 11 Jul, 2025 Comments Improve Suggest changes Like Article Like Report List<T>.AsReadOnly Method is used to get a read-only ReadOnlyCollection<T> wrapper for the current collection. Syntax: public System.Collections.ObjectModel.ReadOnlyCollection<T> AsReadOnly (); Return Value: It returns an object that acts as a read-only wrapper around the current List<T>. Example: csharp // C# code to create a read-only // wrapper for the List<T> using System; using System.Collections.Generic; class GFG { // Driver code public static void Main() { // Creating an List<T> of Integers List<int> mylist = new List<int>(); // Adding elements to List mylist.Add(17); mylist.Add(19); mylist.Add(21); mylist.Add(9); mylist.Add(75); mylist.Add(19); mylist.Add(73); Console.WriteLine("Before Wrapping: "); // Displaying the elements // in the mylist foreach(int i in mylist) { Console.WriteLine(i); } // Creating a Read-Only packing // around the List IList<int> readlist = mylist.AsReadOnly(); Console.WriteLine("After Wrapping: "); // Displaying the elements // of Read-Only Collection foreach(int j in readlist) { Console.WriteLine(j); } // You can add elements to // the original List i.e. mylist Console.WriteLine("Adding new element to mylist: "); mylist.Add(35); // Displaying the elements // in the mylist foreach(int k in mylist) { Console.WriteLine(k); } // But you cannot add elements // into the Read-Only Collection Console.WriteLine("Trying to add new element into readlist:"); // it will give error readlist.Add(34); } } Output: Before Wrapping: 17 19 21 9 75 19 73 After Wrapping: 17 19 21 9 75 19 73 Adding new element to mylist: 17 19 21 9 75 19 73 35 Trying to add new element into readlist: Runtime Error: Unhandled Exception: System.NotSupportedException: Collection is read-only. Reference: https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.asreadonly?view=netframework-4.7.2 Create Quiz Comment K Kirti_Mangal Follow 0 Improve K Kirti_Mangal Follow 0 Improve Article Tags : C# CSharp-method CSharp-Generic-List CSharp-Generic-Namespace 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