Export (0) Print
Expand All

List<T>.AsReadOnly Method

Returns a read-only IList<T> wrapper for the current collection.

Namespace:  System.Collections.Generic
Assembly:  mscorlib (in mscorlib.dll)

public ReadOnlyCollection<T> AsReadOnly()

Return Value

Type: System.Collections.ObjectModel.ReadOnlyCollection<T>
A ReadOnlyCollection<T> that acts as a read-only wrapper around the current List<T>.

To prevent any modifications to List<T>, expose List<T> only through this wrapper.

A collection that is read-only is simply a collection with a wrapper that prevents modifying the collection; therefore, if changes are made to the underlying collection, the read-only collection reflects those changes.

This method is an O(1) operation.

The following code example demonstrates the AsReadOnly method. A List<T> of strings with a capacity of 4 is created, because the ultimate size of the list is known to be exactly 4. The list is populated with four strings, and the AsReadOnly method is used to get a read-only IList<T> generic interface implementation that wraps the original list.

An element of the original list is set to "Coelophysis" using the Item property (the indexer in C#), and the contents of the read-only list are displayed again to demonstrate that it is just a wrapper for the original list.


using System;
using System.Collections.Generic;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      List<string> dinosaurs = new List<string>(4);

      outputBlock.Text += String.Format("\nCapacity: {0}", dinosaurs.Capacity) + "\n";

      dinosaurs.Add("Tyrannosaurus");
      dinosaurs.Add("Amargasaurus");
      dinosaurs.Add("Mamenchisaurus");
      dinosaurs.Add("Deinonychus");

      outputBlock.Text += "\n";
      foreach (string s in dinosaurs)
      {
         outputBlock.Text += s + "\n";
      }

      outputBlock.Text += "\nIList<string> roDinosaurs = dinosaurs.AsReadOnly()" + "\n";
      IList<string> roDinosaurs = dinosaurs.AsReadOnly();

      outputBlock.Text += "\nElements in the read-only IList:" + "\n";
      foreach (string dinosaur in roDinosaurs)
      {
         outputBlock.Text += dinosaur + "\n";
      }

      outputBlock.Text += "\ndinosaurs[2] = \"Coelophysis\"" + "\n";
      dinosaurs[2] = "Coelophysis";

      outputBlock.Text += "\nElements in the read-only IList:" + "\n";
      foreach (string dinosaur in roDinosaurs)
      {
         outputBlock.Text += dinosaur + "\n";
      }
   }
}

/* This code example produces the following output:

Capacity: 4

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus

IList<string> roDinosaurs = dinosaurs.AsReadOnly()

Elements in the read-only IList:
Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus

dinosaurs[2] = "Coelophysis"

Elements in the read-only IList:
Tyrannosaurus
Amargasaurus
Coelophysis
Deinonychus
 */


Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Community Additions

ADD
Show:
© 2014 Microsoft