ReadOnlyCollection<T>.CopyTo Method (T[], Int32)
Copies the entire ReadOnlyCollection<T> to a compatible one-dimensional Array, starting at the specified index of the target array.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- array
-
Type:
T[]
The one-dimensional Array that is the destination of the elements copied from ReadOnlyCollection<T>. The Array must have zero-based indexing.
- index
-
Type:
System.Int32
The zero-based index in array at which copying begins.
Implements
ICollection<T>.CopyTo(T[], Int32)Exception | Condition |
---|---|
ArgumentNullException | array is null. |
ArgumentOutOfRangeException | index is less than zero. |
ArgumentException | The number of elements in the source ReadOnlyCollection<T> is greater than the available space from index to the end of the destination array. |
This method uses Array.Copy to copy the elements.
The elements are copied to the Array in the same order that the enumerator iterates through the ReadOnlyCollection<T>.
This method is an O(n) operation, where n is Count.
The following code example demonstrates 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>.
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" "" */
Available since 8
.NET Framework
Available since 2.0
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1