List<T>.AsReadOnly Method
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Returns a read-only IList<T> wrapper for the current collection.
Namespace: System.Collections.Generic
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Function AsReadOnly As ReadOnlyCollection(Of T)
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>.
Remarks
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.
Examples
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.
Imports System.Collections.Generic
Public Class Example
Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
Dim dinosaurs As New List(Of String)(4)
outputBlock.Text &= String.Format(vbLf & "Capacity: {0}", dinosaurs.Capacity) & vbCrLf
dinosaurs.Add("Tyrannosaurus")
dinosaurs.Add("Amargasaurus")
dinosaurs.Add("Mamenchisaurus")
dinosaurs.Add("Deinonychus")
outputBlock.Text &= vbCrLf
For Each dinosaur As String In dinosaurs
outputBlock.Text &= dinosaur & vbCrLf
Next
outputBlock.Text &= vbLf & _
"Dim roDinosaurs As IList(Of String) = dinosaurs.AsReadOnly" & vbCrLf
Dim roDinosaurs As IList(Of String) = dinosaurs.AsReadOnly
outputBlock.Text &= vbLf & "Elements in the read-only IList:" & vbCrLf
For Each dinosaur As String In roDinosaurs
outputBlock.Text &= dinosaur & vbCrLf
Next
outputBlock.Text &= vbLf & "dinosaurs(2) = ""Coelophysis""" & vbCrLf
dinosaurs(2) = "Coelophysis"
outputBlock.Text &= vbLf & "Elements in the read-only IList:" & vbCrLf
For Each dinosaur As String In roDinosaurs
outputBlock.Text &= dinosaur & vbCrLf
Next
End Sub
End Class
' This code example produces the following output:
'
'Capacity: 4
'
'Tyrannosaurus
'Amargasaurus
'Mamenchisaurus
'Deinonychus
'
'Dim roDinosaurs As IList(Of String) = 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
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
*/
Version Information
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
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.