List<T>.GetRange(Int32, Int32) 方法

定义

在源 List<T> 中创建元素范围的浅表复制。

C#
public System.Collections.Generic.List<T> GetRange (int index, int count);

参数

index
Int32

范围开始处的从零开始的 List<T> 索引。

count
Int32

范围中的元素数。

返回

List<T> 中的元素范围的浅表副本复制。

例外

index 小于 0。

count 小于 0。

indexcount 不表示 List<T> 中元素的有效范围。

示例

以下示例演示 GetRange 了 对范围执行操作的 List<T> 类的 方法和其他方法。 在示例结束时, GetRange 方法用于从列表中获取三个项,从索引位置 2 开始。 在 ToArray 生成的 List<T>上调用 方法,创建一个由三个元素构成的数组。 将显示数组的元素。

C#
using System;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        string[] input = { "Brachiosaurus",
                           "Amargasaurus",
                           "Mamenchisaurus" };

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

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

        Console.WriteLine();
        foreach( string dinosaur in dinosaurs )
        {
            Console.WriteLine(dinosaur);
        }

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

        Console.WriteLine();
        foreach( string dinosaur in dinosaurs )
        {
            Console.WriteLine(dinosaur);
        }

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

        Console.WriteLine();
        foreach( string dinosaur in dinosaurs )
        {
            Console.WriteLine(dinosaur);
        }

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

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

        Console.WriteLine();
        foreach( string dinosaur in dinosaurs )
        {
            Console.WriteLine(dinosaur);
        }

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

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

/* 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
 */

注解

引用类型的集合的浅表副本或该集合的子集仅包含对集合元素的引用。 不会复制对象本身。 新列表中的引用指向与原始列表中的引用相同的对象。

值类型的集合的浅表副本或该集合的子集包含集合的元素。 但是,如果集合的元素包含对其他对象的引用,则不会复制这些对象。 新集合元素中的引用指向与原始集合元素中的引用相同的对象。

相比之下,集合的深层副本会复制元素以及元素直接或间接引用的所有内容。

此方法是 O (n) 操作,其中 ncount

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

另请参阅