Open In App

C# | Creating a read-only wrapper for List

Last Updated : 27 Jan, 2019
Improve
Improve
Like Article
Like
Save
Share
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:




// 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:



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads