Open In App

C# | Creating a read-only wrapper for List

Last Updated : 27 Jan, 2019
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:

Next Article

Similar Reads