Condividi tramite


List<T> Costruttori

Definizione

Inizializza una nuova istanza della classe List<T>.

Overload

Nome Descrizione
List<T>()

Inizializza una nuova istanza della List<T> classe vuota e ha la capacità iniziale predefinita.

List<T>(IEnumerable<T>)

Inizializza una nuova istanza della List<T> classe che contiene elementi copiati dalla raccolta specificata e ha una capacità sufficiente per contenere il numero di elementi copiati.

List<T>(Int32)

Inizializza una nuova istanza della List<T> classe vuota e ha la capacità iniziale specificata.

List<T>()

Origine:
List.cs
Origine:
List.cs
Origine:
List.cs
Origine:
List.cs
Origine:
List.cs

Inizializza una nuova istanza della List<T> classe vuota e ha la capacità iniziale predefinita.

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

Esempio

Nell'esempio seguente viene illustrato il costruttore senza parametri della List<T> classe generica. Il costruttore senza parametri crea un elenco con la capacità predefinita, come illustrato visualizzando la Capacity proprietà .

Nell'esempio vengono aggiunti, inseriti e rimossi elementi, che mostrano come cambia la capacità durante l'utilizzo di questi metodi.

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

Commenti

La capacità di un List<T> oggetto è il numero di elementi che l'oggetto List<T> può contenere. Man mano che gli elementi vengono aggiunti a un List<T>oggetto , la capacità viene aumentata automaticamente come richiesto dalla riallocazione della matrice interna.

Se è possibile stimare le dimensioni della raccolta, l'utilizzo del List<T>(Int32) costruttore e la specifica della capacità iniziale elimina la necessità di eseguire una serie di operazioni di ridimensionamento durante l'aggiunta di elementi a List<T>.

La capacità può essere ridotta chiamando il TrimExcess metodo o impostando la Capacity proprietà in modo esplicito. La riduzione della capacità rialloca la memoria e copia tutti gli elementi in List<T>.

Questo costruttore è un'operazione O(1).

Si applica a

List<T>(IEnumerable<T>)

Origine:
List.cs
Origine:
List.cs
Origine:
List.cs
Origine:
List.cs
Origine:
List.cs

Inizializza una nuova istanza della List<T> classe che contiene elementi copiati dalla raccolta specificata e ha una capacità sufficiente per contenere il numero di elementi copiati.

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))

Parametri

collection
IEnumerable<T>

Raccolta i cui elementi vengono copiati nel nuovo elenco.

Eccezioni

collection è null.

Esempio

Nell'esempio seguente viene illustrato il List<T> costruttore e i vari metodi della List<T> classe che agiscono sugli intervalli. Viene creata e passata una matrice di stringhe al costruttore, popolando l'elenco con gli elementi della matrice. La Capacity proprietà viene quindi visualizzata per indicare che la capacità iniziale è esattamente ciò che è necessario per contenere gli elementi di input.

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

Gli elementi vengono copiati nell'oggetto List<T> nello stesso ordine in cui vengono letti dall'enumeratore della raccolta.

Questo costruttore è un'operazione O(n), dove n è il numero di elementi in collection.

Vedi anche

Si applica a

List<T>(Int32)

Origine:
List.cs
Origine:
List.cs
Origine:
List.cs
Origine:
List.cs
Origine:
List.cs

Inizializza una nuova istanza della List<T> classe vuota e ha la capacità iniziale specificata.

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)

Parametri

capacity
Int32

Numero di elementi che il nuovo elenco può archiviare inizialmente.

Eccezioni

capacity è minore di 0.

Esempio

Nell'esempio seguente viene illustrato il List<T>(Int32) costruttore . Viene List<T> creato un di stringhe con capacità pari a 4, perché la dimensione finale dell'elenco è nota esattamente come 4. L'elenco viene popolato con quattro stringhe e viene creata una copia di sola lettura usando il AsReadOnly metodo .

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

Commenti

La capacità di un List<T> oggetto è il numero di elementi che l'oggetto List<T> può contenere. Man mano che gli elementi vengono aggiunti a un List<T>oggetto , la capacità viene aumentata automaticamente come richiesto dalla riallocazione della matrice interna.

Se è possibile stimare le dimensioni della raccolta, la specifica della capacità iniziale elimina la necessità di eseguire una serie di operazioni di ridimensionamento durante l'aggiunta di elementi a List<T>.

La capacità può essere ridotta chiamando il TrimExcess metodo o impostando la Capacity proprietà in modo esplicito. La riduzione della capacità rialloca la memoria e copia tutti gli elementi in List<T>.

Questo costruttore è un'operazione O(1).

Attenzione

Se capacity proviene dall'input dell'utente, preferire l'uso del costruttore senza parametri e lasciare che la raccolta venga ridimensionata man mano che vengono aggiunti elementi. Se è necessario usare un valore specificato dall'utente, bloccarlo a un limite ragionevole (ad esempio, Math.Clamp(untrustedValue, 0, 20)) o verificare che il numero di elementi corrisponda al valore specificato.

Vedi anche

Si applica a