次の方法で共有


List<T> コンストラクター

定義

List<T> クラスの新しいインスタンスを初期化します。

オーバーロード

名前 説明
List<T>()

空で、既定の初期容量を持つ List<T> クラスの新しいインスタンスを初期化します。

List<T>(IEnumerable<T>)

指定したコレクションからコピーされた要素を含み、コピーされた要素の数に対応できる十分な容量を持つ、 List<T> クラスの新しいインスタンスを初期化します。

List<T>(Int32)

空で、指定した初期容量を持つ List<T> クラスの新しいインスタンスを初期化します。

List<T>()

ソース:
List.cs
ソース:
List.cs
ソース:
List.cs
ソース:
List.cs
ソース:
List.cs

空で、既定の初期容量を持つ List<T> クラスの新しいインスタンスを初期化します。

public:
 List();
public List();
Public Sub New ()

次の例では、 List<T> ジェネリック クラスのパラメーターなしのコンストラクターを示します。 パラメーターなしのコンストラクターは、 Capacity プロパティを表示して示すように、既定の容量を持つリストを作成します。

この例では、項目の追加、挿入、削除を行い、これらのメソッドが使用されるにつれて容量がどのように変化するかを示します。

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

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

dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Mamenchisaurus");
dinosaurs.Add("Deinonychus");
dinosaurs.Add("Compsognathus");
Console.WriteLine();
foreach(string dinosaur in dinosaurs)
{
    Console.WriteLine(dinosaur);
}

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

Console.WriteLine("\nContains(\"Deinonychus\"): {0}",
    dinosaurs.Contains("Deinonychus"));

Console.WriteLine("\nInsert(2, \"Compsognathus\")");
dinosaurs.Insert(2, "Compsognathus");

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

// Shows accessing the list using the Item property.
Console.WriteLine("\ndinosaurs[3]: {0}", dinosaurs[3]);

Console.WriteLine("\nRemove(\"Compsognathus\")");
dinosaurs.Remove("Compsognathus");

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

dinosaurs.TrimExcess();
Console.WriteLine("\nTrimExcess()");
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
Console.WriteLine("Count: {0}", dinosaurs.Count);

dinosaurs.Clear();
Console.WriteLine("\nClear()");
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
Console.WriteLine("Count: {0}", dinosaurs.Count);

/* This code example produces the following output:

Capacity: 0

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus

Capacity: 8
Count: 5

Contains("Deinonychus"): True

Insert(2, "Compsognathus")

Tyrannosaurus
Amargasaurus
Compsognathus
Mamenchisaurus
Deinonychus
Compsognathus

dinosaurs[3]: Mamenchisaurus

Remove("Compsognathus")

Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus

TrimExcess()
Capacity: 5
Count: 5

Clear()
Capacity: 5
Count: 0
 */
Imports System.Collections.Generic

Partial Public Class Program
    Public Shared Sub ShowPlanets()
        Dim planets As New List(Of String)

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

        planets.Add("Mercury")
        planets.Add("Venus")
        planets.Add("Earth")
        planets.Add("Mars")
        planets.Add("Jupiter")

        Console.WriteLine()
        For Each planet As String In planets
            Console.WriteLine(planet)
        Next

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

        Console.WriteLine(vbLf & "Contains(""Mars""): {0}", _
            planets.Contains("Mars"))

        Console.WriteLine(vbLf & "Insert(2, ""Saturn"")")
        planets.Insert(2, "Saturn")

        Console.WriteLine()
        For Each planet As String In planets
            Console.WriteLine(planet)
        Next
        ' Shows how to access the list using the Item property.
        Console.WriteLine(vbLf & "planets(3): {0}", planets(3))
        Console.WriteLine(vbLf & "Remove(""Jupiter"")")
        planets.Remove("Jupiter")

        Console.WriteLine()
        For Each planet As String In planets
            Console.WriteLine(planet)
        Next

        planets.TrimExcess()
        Console.WriteLine(vbLf & "TrimExcess()")
        Console.WriteLine("Capacity: {0}", planets.Capacity)
        Console.WriteLine("Count: {0}", planets.Count)

        planets.Clear()
        Console.WriteLine(vbLf & "Clear()")
        Console.WriteLine("Capacity: {0}", planets.Capacity)
        Console.WriteLine("Count: {0}", planets.Count)
    End Sub
End Class

' This code example produces the following output:
'
' Capacity: 0
'
' Mercury
' Venus
' Earth
' Mars
' Jupiter
'
' Capacity: 8
' Count: 5
'
' Contains("Mars"): True
'
' Insert(2, "Saturn")
'
' Mercury
' Venus
' Saturn
' Earth
' Mars
' Jupiter
'
' planets(3): Earth
'
' Remove("Jupiter")
'
' Mercury
' Venus
' Saturn
' Earth
' Mars
'
' TrimExcess()
' Capacity: 5
' Count: 5
'
' Clear()
' Capacity: 5
' Count: 0

[<EntryPoint>]
let main argv = 
    // We refer to System.Collections.Generic.List<'T> by its type 
    // abbreviation ResizeArray<'T> to avoid conflict with the List module.    
    // Note: In F# code, F# linked lists are usually preferred over
    // ResizeArray<'T> when an extendable collection is required.
    let dinosaurs = ResizeArray<_>()
 
    // Write out the dinosaurs in the ResizeArray.
    let printDinosaurs() =
        printfn ""
        dinosaurs |> Seq.iter (fun p -> printfn "%O" p) 
 
    
    printfn "\nCapacity: %i" dinosaurs.Capacity
 
    dinosaurs.Add("Tyrannosaurus")
    dinosaurs.Add("Amargasaurus")
    dinosaurs.Add("Mamenchisaurus")
    dinosaurs.Add("Deinonychus")
    dinosaurs.Add("Compsognathus")
 
    printDinosaurs()
 
    printfn "\nCapacity: %i" dinosaurs.Capacity
    printfn "Count: %i" dinosaurs.Count
 
    printfn "\nContains(\"Deinonychus\"): %b" (dinosaurs.Contains("Deinonychus"))
 
    printfn "\nInsert(2, \"Compsognathus\")"
    dinosaurs.Insert(2, "Compsognathus")
 
    printDinosaurs()
 
    // Shows accessing the list using the Item property.
    printfn "\ndinosaurs[3]: %s" dinosaurs.[3]
 
    printfn "\nRemove(\"Compsognathus\")"
    dinosaurs.Remove("Compsognathus") |> ignore
 
    printDinosaurs()
 
    dinosaurs.TrimExcess()
    printfn "\nTrimExcess()"
    printfn "Capacity: %i" dinosaurs.Capacity
    printfn "Count: %i" dinosaurs.Count
 
    dinosaurs.Clear()
    printfn "\nClear()"
    printfn "Capacity: %i" dinosaurs.Capacity
    printfn "Count: %i" dinosaurs.Count
 
    0 // return an integer exit code
 
    (* This code example produces the following output:
 
Capacity: 0
 
Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus
 
Capacity: 8
Count: 5
 
Contains("Deinonychus"): true
 
Insert(2, "Compsognathus")
 
Tyrannosaurus
Amargasaurus
Compsognathus
Mamenchisaurus
Deinonychus
Compsognathus
 
dinosaurs[3]: Mamenchisaurus
 
Remove("Compsognathus")
 
Tyrannosaurus
Amargasaurus
Mamenchisaurus
Deinonychus
Compsognathus
 
TrimExcess()
Capacity: 5
Count: 5
 
Clear()
Capacity: 5
Count: 0
    *)

注釈

List<T>の容量は、List<T>が保持できる要素の数です。 要素が List<T>に追加されると、内部配列を再割り当てすることで、必要に応じて容量が自動的に増加します。

コレクションのサイズを見積もることができる場合は、 List<T>(Int32) コンストラクターを使用し、初期容量を指定すると、 List<T>に要素を追加するときに、多数のサイズ変更操作を実行する必要がなくなります。

容量を減らすには、 TrimExcess メソッドを呼び出すか、 Capacity プロパティを明示的に設定します。 容量を減らすと、メモリが再割り当てされ、 List<T>内のすべての要素がコピーされます。

このコンストラクターは O(1) 操作です。

適用対象

List<T>(IEnumerable<T>)

ソース:
List.cs
ソース:
List.cs
ソース:
List.cs
ソース:
List.cs
ソース:
List.cs

指定したコレクションからコピーされた要素を含み、コピーされた要素の数に対応できる十分な容量を持つ、 List<T> クラスの新しいインスタンスを初期化します。

public:
 List(System::Collections::Generic::IEnumerable<T> ^ collection);
public List(System.Collections.Generic.IEnumerable<T> collection);
new System.Collections.Generic.List<'T> : seq<'T> -> System.Collections.Generic.List<'T>
Public Sub New (collection As IEnumerable(Of T))

パラメーター

collection
IEnumerable<T>

要素が新しいリストにコピーされるコレクション。

例外

collectionnullです。

次の例では、 List<T> コンストラクターと、範囲に作用する List<T> クラスのさまざまなメソッドを示します。 文字列の配列が作成され、コンストラクターに渡され、配列の要素がリストに設定されます。 その後、 Capacity プロパティが表示され、入力要素を保持するために必要な初期容量が正確に示されます。

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

注釈

要素は、コレクションの列挙子によって読み取られたのと同じ順序で List<T> にコピーされます。

このコンストラクターは O(n) 演算であり、 ncollection内の要素の数です。

こちらもご覧ください

適用対象

List<T>(Int32)

ソース:
List.cs
ソース:
List.cs
ソース:
List.cs
ソース:
List.cs
ソース:
List.cs

空で、指定した初期容量を持つ List<T> クラスの新しいインスタンスを初期化します。

public:
 List(int capacity);
public List(int capacity);
new System.Collections.Generic.List<'T> : int -> System.Collections.Generic.List<'T>
Public Sub New (capacity As Integer)

パラメーター

capacity
Int32

新しいリストが最初に格納できる要素の数。

例外

capacity が 0 未満です。

次の例では、 List<T>(Int32) コンストラクターを示します。 リストの最終的なサイズは正確に 4 であることがわかっているため、容量が 4 の文字列の List<T> が作成されます。 リストには 4 つの文字列が設定され、 AsReadOnly メソッドを使用して読み取り専用コピーが作成されます。

using System;
using System.Collections.Generic;

public partial class Program
{
    public static void Main()
    {
        List<string> animals = new List<string>(4);

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

        animals.Add("Cat");
        animals.Add("Dog");
        animals.Add("Squirrel");
        animals.Add("Wolf");

        Console.WriteLine();
        foreach (string animal in animals)
        {
            Console.WriteLine(animal);
        }

        Console.WriteLine("\nIList<string> roAnimals = animals.AsReadOnly()");
        IList<string> roAnimals = animals.AsReadOnly();

        Console.WriteLine("\nElements in the read-only IList:");
        foreach (string animal in roAnimals)
        {
            Console.WriteLine(animal);
        }

        Console.WriteLine("\nanimals[2] = \"Lion\"");
        animals[2] = "Lion";

        Console.WriteLine("\nElements in the read-only IList:");
        foreach (string animal in roAnimals)
        {
            Console.WriteLine(animal);
        }
    }
}

/*
    This code example produces the following output:

    Capacity: 4

    Cat
    Dog
    Squirrel
    Wolf

    IList<string> roAnimals = animals.AsReadOnly()

    Elements in the read-only IList:
    Cat
    Dog
    Squirrel
    Wolf

    animals[2] = "Lion"

    Elements in the read-only IList:
    Cat
    Dog
    Lion
    Wolf
*/
Imports System.Collections.Generic

Partial Public Class Program
    Public Shared Sub Main()

        Dim animals As New List(Of String)(4)

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

        animals.Add("Cat")
        animals.Add("Dog")
        animals.Add("Squirrel")
        animals.Add("Wolf")

        Console.WriteLine()
        For Each animal As String In animals
            Console.WriteLine(animal)
        Next

        Console.WriteLine(vbLf & _
            "Dim roAnimals As IList(Of String) = animals.AsReadOnly")
        Dim roAnimals As IList(Of String) = animals.AsReadOnly

        Console.WriteLine(vbLf & "Elements in the read-only IList:")
        For Each animal As String In roAnimals
            Console.WriteLine(animal)
        Next

        Console.WriteLine(vbLf & "animals(2) = ""Lion""")
        animals(2) = "Lion"

        Console.WriteLine(vbLf & "Elements in the read-only IList:")
        For Each animal As String In roAnimals
            Console.WriteLine(animal)
        Next

    End Sub
End Class

' This code example produces the following output:
'
' Capacity: 4
'
' Cat
' Dog
' Squirrel
' Wolf
'
' Dim roAnimals As IList(Of String) = animals.AsReadOnly
'
' Elements in the read-only IList:
' Cat
' Dog
' Squirrel
' Wolf
'
' animals(2) = "Lion"
'
' Elements in the read-only IList:
' Cat
' Dog
' Lion
' Wolf

注釈

List<T>の容量は、List<T>が保持できる要素の数です。 要素が List<T>に追加されると、内部配列を再割り当てすることで、必要に応じて容量が自動的に増加します。

コレクションのサイズを見積もることができる場合、初期容量を指定すると、 List<T>に要素を追加するときに、多数のサイズ変更操作を実行する必要がなくなります。

容量を減らすには、 TrimExcess メソッドを呼び出すか、 Capacity プロパティを明示的に設定します。 容量を減らすと、メモリが再割り当てされ、 List<T>内のすべての要素がコピーされます。

このコンストラクターは O(1) 操作です。

注意事項

capacityがユーザー入力から来ている場合は、パラメーターなしのコンストラクターを使用し、要素が追加されるにつれてコレクションのサイズを変更することを好みます。 ユーザー指定の値を使用する必要がある場合は、適切な制限 (たとえば、 Math.Clamp(untrustedValue, 0, 20)) にクランプするか、要素数が指定した値と一致することを確認します。

こちらもご覧ください

適用対象