ReadOnlyCollection<T> Constructor
Initializes a new instance of the ReadOnlyCollection<T> class that is a read-only wrapper around the specified list.
Assembly: mscorlib (in mscorlib.dll)
| Exception | Condition |
|---|---|
| ArgumentNullException | list is null. |
To prevent any modifications to list, expose list 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 constructor is an O(1) operation.
The following code example demonstrates this constructor and several members of the ReadOnlyCollection<T> class.
The code example creates a List<T> of strings and adds four dinosaur names to it. The code example then wraps the list in a ReadOnlyCollection<T> by passing it to the constructor.
After demonstrating the Count, Contains, Item, and IList.IndexOf members, the code example shows that the ReadOnlyCollection<T> is just a wrapper for the original List<T> by adding a new item to the List<T> and displaying the contents of the ReadOnlyCollection<T>.
Finally, the code example creates an array larger than the collection and uses the CopyTo method to insert the elements of the collection into the middle of the array.
using System; using System.Collections.Generic; using System.Collections.ObjectModel; public class Example { public static void Main() { List<string> dinosaurs = new List<string>(); dinosaurs.Add("Tyrannosaurus"); dinosaurs.Add("Amargasaurus"); dinosaurs.Add("Deinonychus"); dinosaurs.Add("Compsognathus"); ReadOnlyCollection<string> readOnlyDinosaurs = new ReadOnlyCollection<string>(dinosaurs); Console.WriteLine(); foreach( string dinosaur in readOnlyDinosaurs ) { Console.WriteLine(dinosaur); } Console.WriteLine("\nCount: {0}", readOnlyDinosaurs.Count); Console.WriteLine("\nContains(\"Deinonychus\"): {0}", readOnlyDinosaurs.Contains("Deinonychus")); Console.WriteLine("\nreadOnlyDinosaurs[3]: {0}", readOnlyDinosaurs[3]); Console.WriteLine("\nIndexOf(\"Compsognathus\"): {0}", readOnlyDinosaurs.IndexOf("Compsognathus")); Console.WriteLine("\nInsert into the wrapped List:"); Console.WriteLine("Insert(2, \"Oviraptor\")"); dinosaurs.Insert(2, "Oviraptor"); Console.WriteLine(); foreach( string dinosaur in readOnlyDinosaurs ) { Console.WriteLine(dinosaur); } string[] dinoArray = new string[readOnlyDinosaurs.Count + 2]; readOnlyDinosaurs.CopyTo(dinoArray, 1); Console.WriteLine("\nCopied array has {0} elements:", dinoArray.Length); foreach( string dinosaur in dinoArray ) { Console.WriteLine("\"{0}\"", dinosaur); } } } /* This code example produces the following output: Tyrannosaurus Amargasaurus Deinonychus Compsognathus Count: 4 Contains("Deinonychus"): True readOnlyDinosaurs[3]: Compsognathus IndexOf("Compsognathus"): 3 Insert into the wrapped List: Insert(2, "Oviraptor") Tyrannosaurus Amargasaurus Oviraptor Deinonychus Compsognathus Copied array has 7 elements: "" "Tyrannosaurus" "Amargasaurus" "Oviraptor" "Deinonychus" "Compsognathus" "" */
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.