List<T>.GetRange(Int32, Int32) Metodo

Definizione

Crea una copia superficiale di un intervallo di elementi nell'origine List<T>.

public:
 System::Collections::Generic::List<T> ^ GetRange(int index, int count);
public System.Collections.Generic.List<T> GetRange(int index, int count);
member this.GetRange : int * int -> System.Collections.Generic.List<'T>
Public Function GetRange (index As Integer, count As Integer) As List(Of T)

Parametri

index
Int32

Indice in base List<T> zero in corrispondenza del quale inizia l'intervallo.

count
Int32

Numero di elementi nell'intervallo.

Valori restituiti

Copia superficiale di un intervallo di elementi nell'origine List<T>.

Eccezioni

index è minore di 0.

oppure

count è minore di 0.

index e count non indicano un intervallo valido di elementi in List<T>.

Esempio

Nell'esempio seguente viene illustrato il GetRange metodo e altri metodi della List<T> classe che agiscono sugli intervalli. Alla fine dell'esempio, il GetRange metodo viene usato per ottenere tre elementi dall'elenco, a partire dalla posizione dell'indice 2. Il ToArray metodo viene chiamato sull'oggetto risultante List<T>, creando una matrice di tre elementi. Vengono visualizzati gli elementi della matrice.

using System;
using System.Collections.Generic;

string[] input = { "Apple",
                   "Banana",
                   "Orange" };

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

Console.WriteLine("\nCapacity: {0}", fruits.Capacity);
Console.WriteLine();

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

Console.WriteLine("\nAddRange(fruits)");
fruits.AddRange(fruits);

Console.WriteLine();
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

Console.WriteLine("\nRemoveRange(2, 2)");
fruits.RemoveRange(2, 2);

Console.WriteLine();
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

input = new string[] { "Mango",
                       "Pineapple",
                       "Watermelon" };

Console.WriteLine("\nInsertRange(3, input)");
fruits.InsertRange(3, input);

Console.WriteLine();
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}

Console.WriteLine("\noutput = fruits.GetRange(2, 3).ToArray()");
string[] output = fruits.GetRange(2, 3).ToArray();

Console.WriteLine();
foreach (string fruit in output)
{
    Console.WriteLine(fruit);
}

/*
    This code example produces the following output:

    Capacity: 3

    Apple
    Banana
    Orange

    AddRange(fruits)

    Apple
    Banana
    Orange
    Apple
    Banana
    Orange

    RemoveRange(2, 2)

    Apple
    Banana
    Banana
    Orange

    InsertRange(3, input)

    Apple
    Banana
    Banana
    Mango
    Pineapple
    Watermelon
    Orange

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

    Banana
    Mango
    Pineapple
*/
Imports System.Collections.Generic

Partial Public Class Program
    Public Shared Sub ShowFruits()

        Dim input() As String = { "Apple", _
                                  "Banana", _
                                  "Orange" }

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

        Console.WriteLine(vbLf & "Capacity: {0}", fruits.Capacity)
        Console.WriteLine()

        For Each fruit As String In fruits
            Console.WriteLine(fruit)
        Next

        Console.WriteLine(vbLf & "AddRange(fruits)")
        fruits.AddRange(fruits)

        Console.WriteLine()
        For Each fruit As String In fruits
            Console.WriteLine(fruit)
        Next

        Console.WriteLine(vbLf & "RemoveRange(2, 2)")
        fruits.RemoveRange(2, 2)

        Console.WriteLine()
        For Each fruit As String In fruits
            Console.WriteLine(fruit)
        Next

        input = New String() { "Mango", _
                               "Pineapple", _
                               "Watermelon" }

        Console.WriteLine(vbLf & "InsertRange(3, input)")
        fruits.InsertRange(3, input)

        Console.WriteLine()
        For Each fruit As String In fruits
            Console.WriteLine(fruit)
        Next

        Console.WriteLine(vbLf & "output = fruits.GetRange(2, 3).ToArray")
        Dim output() As String = fruits.GetRange(2, 3).ToArray()

        Console.WriteLine()
        For Each fruit As String In output
            Console.WriteLine(fruit)
        Next

    End Sub
End Class

' This code example produces the following output:
'
' Capacity: 3
'
' Apple
' Banana
' Orange
'
' AddRange(fruits)
'
' Apple
' Banana
' Orange
' Apple
' Banana
' Orange
'
' RemoveRange(2, 2)
'
' Apple
' Banana
' Banana
' Orange
'
' InsertRange(3, input)
'
' Apple
' Banana
' Banana
' Mango
' Pineapple
' Watermelon
' Orange
'
' output = fruits.GetRange(2, 3).ToArray
'
' Banana
' Mango
' Pineapple

Commenti

Una copia superficiale di una raccolta di tipi riferimento o di un subset di tale raccolta contiene solo i riferimenti agli elementi della raccolta. Gli oggetti stessi non vengono copiati. Riferimenti nel nuovo punto elenco agli stessi oggetti dei riferimenti nell'elenco originale.

Una copia superficiale di una raccolta di tipi valore o di un subset di tale raccolta contiene gli elementi della raccolta. Tuttavia, se gli elementi della raccolta contengono riferimenti ad altri oggetti, tali oggetti non vengono copiati. I riferimenti negli elementi della nuova raccolta puntano agli stessi oggetti dei riferimenti negli elementi della raccolta originale.

Al contrario, una copia completa di una raccolta copia gli elementi e tutto direttamente o indirettamente a cui fanno riferimento gli elementi.

Questo metodo è un'operazione O(n), dove n è count.

Si applica a

Vedi anche