ArraySegment<T> Constructor (array<T>)
Initializes a new instance of the ArraySegment<T> structure that delimits all the elements in the specified array.
Assembly: mscorlib (in mscorlib.dll)
| Exception | Condition |
|---|---|
| ArgumentNullException | array is nullptr. |
This constructor creates an ArraySegment<T> that delimits all the elements of array. That is, the Offset property of the ArraySegment<T> is 0 and its Count property is the length of array. To create an ArraySegment<T> that delimits only part of an array, use the ArraySegment<T>(array<T>, Int32, Int32) constructor.
The original array must be one-dimensional and must have zero-based indexing.
Multiple ArraySegment<T> instances can refer to the same original array and can overlap.
The following code example passes an ArraySegment<T> structure to a method.
using namespace System; namespace Sample { public ref class SampleArray { public: static void Work() { // Create and initialize a new string array. array <String^>^ words = {"The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"}; // Display the initial contents of the array. Console::WriteLine("The first array segment" " (with all the array's elements) contains:"); PrintIndexAndValues(words); // Define an array segment that contains the entire array. ArraySegment<String^> segment(words); // Display the contents of the ArraySegment. Console::WriteLine("The first array segment" " (with all the array's elements) contains:"); PrintIndexAndValues(segment); // Define an array segment that contains the middle five // values of the array. ArraySegment<String^> middle(words, 2, 5); // Display the contents of the ArraySegment. Console::WriteLine("The second array segment" " (with the middle five elements) contains:"); PrintIndexAndValues(middle); // Modify the fourth element of the first array // segment segment.Array[3] = "LION"; // Display the contents of the second array segment // middle. Note that the value of its second element // also changed. Console::WriteLine("After the first array segment" " is modified,the second array segment" " now contains:"); PrintIndexAndValues(middle); Console::ReadLine(); } static void PrintIndexAndValues(ArraySegment<String^>^ segment) { for (int i = segment->Offset; i < (segment->Offset + segment->Count); i++) { Console::WriteLine(" [{0}] : {1}", i, segment->Array[i]); } Console::WriteLine(); } static void PrintIndexAndValues(array<String^>^ words) { for (int i = 0; i < words->Length; i++) { Console::WriteLine(" [{0}] : {1}", i, words[i]); } Console::WriteLine(); } }; } int main() { Sample::SampleArray::Work(); return 0; } /* This code produces the following output. The original array initially contains: [0] : The [1] : quick [2] : brown [3] : fox [4] : jumps [5] : over [6] : the [7] : lazy [8] : dog The first array segment (with all the array's elements) contains: [0] : The [1] : quick [2] : brown [3] : fox [4] : jumps [5] : over [6] : the [7] : lazy [8] : dog The second array segment (with the middle five elements) contains: [2] : brown [3] : fox [4] : jumps [5] : over [6] : the After the first array segment is modified, the second array segment now contains: [2] : brown [3] : LION [4] : jumps [5] : over [6] : the */
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.