Condividi tramite


Informazioni su come gestire le raccolte dati usando l'elenco<T> in C#

Questa esercitazione introduttiva fornisce un'introduzione al linguaggio C# e alle nozioni di base della classe .

Questa esercitazione illustra in modo interattivo C# usando il browser per scrivere codice C# e visualizzare i risultati della compilazione e dell'esecuzione del codice. Contiene una serie di lezioni che creano, modificano ed esplorano raccolte e matrici. Si lavora principalmente con la classe List<T>.

Esempio di elenco di base

Suggerimento

Quando un blocco di frammenti di codice include il pulsante "Esegui", il pulsante apre la finestra interattiva o sostituisce il codice esistente nella finestra interattiva. Quando il frammento di codice non include un pulsante "Esegui", è possibile copiare il codice e aggiungerlo alla finestra interattiva corrente.

Eseguire il codice seguente nella finestra interattiva. Sostituire <name> con il nome e selezionare Esegui:

List<string> names = ["<name>", "Ana", "Felipe"];
foreach (var name in names)
{
    Console.WriteLine($"Hello {name.ToUpper()}!");
}

È stato creato un elenco di stringhe, sono stati aggiunti tre nomi a tale elenco e sono stati stampati i nomi in tutti i CAPS. Si usano i concetti appresi nelle esercitazioni precedenti per scorrere l'elenco.

Il codice per visualizzare i nomi utilizza la funzionalità di interpolazione di stringhe . Quando si precede un string con il carattere $, è possibile incorporare il codice C# nella dichiarazione di stringa. La stringa effettiva sostituisce il codice C# con il valore generato. In questo esempio, il sistema sostituisce il {name.ToUpper()} con ogni nome, convertito in lettere maiuscole, perché hai chiamato il metodo String.ToUpper.

Continuiamo a esplorare.

Modificare il contenuto dell'elenco

La raccolta che hai creato usa il tipo List<T>. Questo tipo archivia sequenze di elementi. Specificare il tipo di elementi tra parentesi angolari.

Un aspetto importante di questo tipo di List<T> è che può aumentare o ridurre, consentendo di aggiungere o rimuovere elementi. È possibile visualizzare i risultati modificando il contenuto dopo aver visualizzato il relativo contenuto. Aggiungere il codice seguente dopo il codice già scritto (il ciclo che stampa il contenuto):

Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
    Console.WriteLine($"Hello {name.ToUpper()}!");
}

Sono stati aggiunti altri due nomi alla fine dell'elenco. Anche quello è stato rimosso. L'output di questo blocco di codice mostra il contenuto iniziale, quindi stampa una riga vuota e il nuovo contenuto.

Il List<T> consente di fare riferimento a singoli elementi anche tramite indice . È possibile accedere agli elementi usando i token di [ e ]. Aggiungere il codice seguente dopo ciò che è già stato scritto e provarlo:

Console.WriteLine($"My name is {names[0]}.");
Console.WriteLine($"I've added {names[2]} and {names[3]} to the list.");

Non è consentito accedere oltre la fine dell'elenco. È possibile controllare per quanto tempo l'elenco usa la proprietà Count. Aggiungere il codice seguente:

Console.WriteLine($"The list has {names.Count} people in it");

Selezionare di nuovo Esegui per visualizzare i risultati. In C# gli indici iniziano da 0, quindi l'indice valido più grande è minore del numero di elementi nell'elenco.

Cercare e ordinare elenchi

Gli esempi usano elenchi relativamente piccoli, ma le applicazioni possono spesso creare elenchi con molti più elementi, a volte numerati nelle migliaia. Per trovare elementi in queste raccolte più grandi, è necessario cercare elementi diversi nell'elenco. Il metodo IndexOf cerca un elemento e restituisce l'indice dell'elemento. Se l'elemento non è presente nell'elenco, IndexOf restituisce -1. Provare a vedere come funziona. Aggiungere il codice seguente dopo quanto scritto finora:

var index = names.IndexOf("Felipe");
if (index == -1)
{
    Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
    Console.WriteLine($"The name {names[index]} is at index {index}");
}

index = names.IndexOf("Not Found");
if (index == -1)
{
    Console.WriteLine($"When an item is not found, IndexOf returns {index}");
}
else
{
    Console.WriteLine($"The name {names[index]} is at index {index}");
}

È possibile che non si sappia se un elemento si trova nell'elenco, pertanto è consigliabile controllare sempre l'indice restituito da IndexOf. Se è -1, l'elemento non è stato trovato.

Anche gli elementi dell'elenco possono essere ordinati. Il metodo Sort ordina tutti gli elementi dell'elenco nell'ordine normale (alfabeticamente per le stringhe). Aggiungere questo codice ed eseguire di nuovo:

names.Sort();
foreach (var name in names)
{
    Console.WriteLine($"Hello {name.ToUpper()}!");
}

Elenchi di altri tipi

Finora hai utilizzato il tipo string negli elenchi. Creiamo un List<T> usando un tipo diverso. Costruiamo un insieme di numeri. Eliminare il codice scritto finora e sostituirlo con il codice seguente:

List<int> fibonacciNumbers = [1, 1];

Ciò crea un elenco di numeri interi e imposta i primi due interi al valore 1. La sequenza Fibonacci, una sequenza di numeri, inizia con due 1. Ogni successivo numero di Fibonacci viene trovato prendendo la somma dei due numeri precedenti. Aggiungere questo codice:

var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];

fibonacciNumbers.Add(previous + previous2);

foreach (var item in fibonacciNumbers)
{
    Console.WriteLine(item);
}

Premere Esegui per visualizzare i risultati;

Sfida

Vedere se è possibile mettere insieme alcuni dei concetti di questa e delle lezioni precedenti. Espandi ciò che hai costruito finora con i numeri di Fibonacci. Provare a scrivere il codice per generare i primi 20 numeri nella sequenza. Come suggerimento, il 20° numero di Fibonacci è 6765.

Sei venuto con qualcosa di simile a questo?

:::code language="csharp" interactive="try-dotnet-method" source="./snippets/ListCollection/Program.cs" id="Answer":::

Con ogni iterazione del ciclo, si prendono gli ultimi due numeri interi nell'elenco, si sommano e si aggiunge tale valore all'elenco. Il ciclo si ripete fino a quando non sono stati aggiunti 20 elementi all'elenco.

Hai completato l'esercitazione interattiva sull'elenco, l'ultima introduzione all'esercitazione interattiva su C#. È possibile visitare il sito .NET per scaricare .NET SDK, creare un progetto nel computer e continuare a scrivere codice. La sezione "Passaggi successivi" ti riporta indietro a questi tutorial.

Per altre informazioni sulle raccolte .NET , vedere gli articoli seguenti:

Complimenti, hai completato l'esercitazione sull'elenco. Puoi continuare con altre esercitazioni nel tuo proprio ambiente di sviluppo.

Per altre informazioni sull'uso del tipo di List, vedere l'articolo Nozioni fondamentali di .NET sulle raccolte . Vengono inoltre fornite informazioni su molti altri tipi di raccolta.