Поделиться через


List<T>.GetRange Method

Microsoft Silverlight will reach end of support after October 2021. Learn more.

Creates a shallow copy of a range of elements in the source List<T>.

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

Syntax

'Declaration
Public Function GetRange ( _
    index As Integer, _
    count As Integer _
) As List(Of T)
public List<T> GetRange(
    int index,
    int count
)

Parameters

  • count
    Type: System.Int32
    The number of elements in the range.

Return Value

Type: System.Collections.Generic.List<T>
A shallow copy of a range of elements in the source List<T>.

Exceptions

Exception Condition
ArgumentOutOfRangeException

index is less than 0.

-or-

count is less than 0.

ArgumentException

index and count do not denote a valid range of elements in the List<T>.

Remarks

A shallow copy of a collection of reference types, or a subset of that collection, contains only the references to the elements of the collection. The objects themselves are not copied. The references in the new list point to the same objects as the references in the original list.

A shallow copy of a collection of value types, or a subset of that collection, contains the elements of the collection. However, if the elements of the collection contain references to other objects, those objects are not copied. The references in the elements of the new collection point to the same objects as the references in the elements of the original collection.

In contrast, a deep copy of a collection copies the elements and everything directly or indirectly referenced by the elements.

This method is an O(n) operation, where n is count.

Examples

The following code example demonstrates the GetRange method and other methods of the List<T> class that act on ranges. At the end of the code example, the GetRange method is used to get three items from the list, beginning with index location 2. The ToArray method is called on the resulting List<T>, creating an array of three elements. The elements of the array are displayed.

Imports System.Collections.Generic

Public Class Example

   Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)

      Dim input() As String = {"Brachiosaurus", _
                                "Amargasaurus", _
                                "Mamenchisaurus"}

      Dim dinosaurs As New List(Of String)(input)

      outputBlock.Text += String.Format(vbLf & "Capacity: {0}", dinosaurs.Capacity) & vbCrLf

      outputBlock.Text &= vbCrLf
      For Each dinosaur As String In dinosaurs
         outputBlock.Text &= dinosaur & vbCrLf
      Next

      outputBlock.Text &= vbLf & "AddRange(dinosaurs)" & vbCrLf
      dinosaurs.AddRange(dinosaurs)

      outputBlock.Text &= vbCrLf
      For Each dinosaur As String In dinosaurs
         outputBlock.Text &= dinosaur & vbCrLf
      Next

      outputBlock.Text += String.Format(vbLf & "RemoveRange(2, 2)") & vbCrLf
      dinosaurs.RemoveRange(2, 2)

      outputBlock.Text &= vbCrLf
      For Each dinosaur As String In dinosaurs
         outputBlock.Text &= dinosaur & vbCrLf
      Next

      input = New String() {"Tyrannosaurus", _
                             "Deinonychus", _
                             "Velociraptor"}

      outputBlock.Text += String.Format(vbLf & "InsertRange(3, input)") & vbCrLf
      dinosaurs.InsertRange(3, input)

      outputBlock.Text &= vbCrLf
      For Each dinosaur As String In dinosaurs
         outputBlock.Text &= dinosaur & vbCrLf
      Next

      outputBlock.Text += String.Format(vbLf & "output = dinosaurs.GetRange(2, 3).ToArray") & vbCrLf
      Dim output() As String = dinosaurs.GetRange(2, 3).ToArray()

      outputBlock.Text &= vbCrLf
      For Each dinosaur As String In output
         outputBlock.Text &= dinosaur & vbCrLf
      Next

   End Sub
End Class

' This code example produces the following output:
'
'Capacity: 3
'
'Brachiosaurus
'Amargasaurus
'Mamenchisaurus
'
'AddRange(dinosaurs)
'
'Brachiosaurus
'Amargasaurus
'Mamenchisaurus
'Brachiosaurus
'Amargasaurus
'Mamenchisaurus
'
'RemoveRange(2, 2)
'
'Brachiosaurus
'Amargasaurus
'Amargasaurus
'Mamenchisaurus
'
'InsertRange(3, input)
'
'Brachiosaurus
'Amargasaurus
'Amargasaurus
'Tyrannosaurus
'Deinonychus
'Velociraptor
'Mamenchisaurus
'
'output = dinosaurs.GetRange(2, 3).ToArray
'
'Amargasaurus
'Tyrannosaurus
'Deinonychus
using System;
using System.Collections.Generic;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      string[] input = { "Brachiosaurus", 
                           "Amargasaurus", 
                           "Mamenchisaurus" };

      List<string> dinosaurs = new List<string>(input);

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

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

      outputBlock.Text += "\nAddRange(dinosaurs)" + "\n";
      dinosaurs.AddRange(dinosaurs);

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

      outputBlock.Text += String.Format("\nRemoveRange(2, 2)") + "\n";
      dinosaurs.RemoveRange(2, 2);

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

      input = new string[] { "Tyrannosaurus", 
                               "Deinonychus", 
                               "Velociraptor"};

      outputBlock.Text += String.Format("\nInsertRange(3, input)") + "\n";
      dinosaurs.InsertRange(3, input);

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

      outputBlock.Text += String.Format("\noutput = dinosaurs.GetRange(2, 3).ToArray()") + "\n";
      string[] output = dinosaurs.GetRange(2, 3).ToArray();

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

/* This code example produces the following output:

Capacity: 3

Brachiosaurus
Amargasaurus
Mamenchisaurus

AddRange(dinosaurs)

Brachiosaurus
Amargasaurus
Mamenchisaurus
Brachiosaurus
Amargasaurus
Mamenchisaurus

RemoveRange(2, 2)

Brachiosaurus
Amargasaurus
Amargasaurus
Mamenchisaurus

InsertRange(3, input)

Brachiosaurus
Amargasaurus
Amargasaurus
Tyrannosaurus
Deinonychus
Velociraptor
Mamenchisaurus

output = dinosaurs.GetRange(2, 3).ToArray()

Amargasaurus
Tyrannosaurus
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.