Informazioni su come gestire le raccolte dati tramite il tipo di elenco generico
Questa esercitazione presenta C# in modo interattivo, usando il browser per scrivere codice C# e visualizzare i risultati della compilazione e dell'esecuzione del codice. L'esercitazione è composta da una serie di lezioni che descrivono come creare, modificare ed esplorare raccolte e matrici.
Suggerimento
Per incollare un frammento di codice nella modalità messa a fuoco è consigliabile usare le scelte rapide da tastiera (CTRL + V o CMD + V).
Creare elenchi
Eseguire il codice seguente nella finestra interattiva. Selezionare il pulsante Attiva modalità messa a fuoco. Digitare quindi il blocco di codice seguente nella finestra interattiva (sostituire <name>
con il proprio nome) e selezionare Esegui:
var names = new List<string> { "<name>", "Ana", "Felipe" };
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Se si esegue il codice nell'ambiente personale, è consigliabile seguire invece le istruzioni per la versione locale.
Questo codice consente di creare un elenco di stringhe, aggiungere tre nomi all'elenco e stampare i nomi in lettere maiuscole. Vengono usati i concetti appresi nelle esercitazioni precedenti per eseguire il ciclo dell'elenco.
Il codice per visualizzare i nomi usa la funzionalità di interpolazione di stringhe. Anteponendo il carattere $
a string
, è possibile incorporare il codice C# nella dichiarazione della stringa. La stringa effettiva sostituisce il codice C# con il valore generato. In questo esempio, {name.ToUpper()}
viene sostituito con ogni nome, convertito in lettere maiuscole, perché è stato chiamato il metodo String.ToUpper.
L'esplorazione continua nelle prossime lezioni.
Modificare il contenuto dell'elenco
La raccolta creata usa il tipo List<T>. Questo tipo archivia sequenze di elementi. Il tipo degli elementi viene specificato tra parentesi uncinate.
Un aspetto importante di questo tipo di List<T> è che supporta estensioni o riduzioni, consentendo l'aggiunta o la rimozione di elementi. È possibile visualizzare i risultati modificando il contenuto dopo averlo visualizzato. Aggiungere il codice seguente sotto il codice già scritto (sotto 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 e ne è stato anche rimosso uno. L'output di questo blocco di codice mostra il contenuto iniziale, quindi stampa una riga vuota e il nuovo contenuto.
List<T> consente di fare riferimento a singoli elementi anche in base all'indice. Per accedere agli elementi si usano i token [
e ]
. Aggiungere il codice seguente sotto il codice già 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 l'accesso oltre la fine dell'elenco. È possibile controllare la lunghezza dell'elenco tramite la proprietà Count. Aggiungere il codice seguente per provarlo:
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, pertanto l'indice massimo valido è minore di un'unità rispetto al numero di elementi nell'elenco.
Eseguire ricerche negli elenchi e ordinarli
In questi esempi vengono usati elenchi relativamente piccoli, ma le applicazioni reali creano spesso elenchi con molti più elementi, a volte anche migliaia. Per trovare elementi in raccolte di tali dimensioni, è necessario avere la possibilità di eseguire ricerche nell'elenco. Il metodo IndexOf cerca un elemento e ne restituisce l'indice. Se l'elemento non è presente nell'elenco, IndexOf
restituisce -1
. Provare questo codice per verificarne il funzionamento. Aggiungere il codice seguente sotto il codice già scritto finora:
var index = names.IndexOf("Felipe");
if (index != -1)
{
Console.WriteLine($"The name {names[index]} is at index {index}");
}
var notFound = names.IndexOf("Not Found");
Console.WriteLine($"When an item is not found, IndexOf returns {notFound}");
Si potrebbe non sapere se un elemento è presente nell'elenco, quindi è consigliabile controllare sempre l'indice restituito da IndexOf. Se è -1
, l'elemento non è stato trovato.
Gli elementi in un elenco possono anche essere ordinati. Il metodo Sort ordina tutti gli elementi nell'elenco in base all'ordine normale (alfabetico 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 è stato usato il tipo string
negli elenchi. Di seguito verrà creato un List<T> con un tipo diverso. Per iniziare, creare un set di numeri. Eliminare il codice scritto e sostituirlo con il codice seguente:
var fibonacciNumbers = new List<int> {1, 1};
Questo codice crea un elenco di interi e imposta i primi due interi sul valore 1. La sequenza di Fibonacci, una sequenza di numeri, inizia con due cifre 1. Ogni numero della successione di Fibonacci viene ottenuto dalla 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.
Proposta
È il momento di scoprire se è possibile mettere in pratica alcuni dei concetti appresi in questa lezione e in quelle precedenti. Applicare i concetti appresi finora in relazione ai numeri di Fibonacci. Provare a scrivere il codice per generare i primi 20 numeri nella successione. Tenere presente che il 20° numero di Fibonacci è 6765.
Completare l'esercizio
I risultati ottenuti sono simili a questi?
var fibonacciNumbers = new List<int> {1, 1};
while (fibonacciNumbers.Count < 20)
{
var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
fibonacciNumbers.Add(previous + previous2);
}
foreach(var item in fibonacciNumbers)
{
Console.WriteLine(item);
}
A ogni iterazione del ciclo, gli ultimi due interi nell'elenco vengono sommati e il valore risultante viene aggiunto all'elenco. Il ciclo viene ripetuto fino ad aggiungere 20 elementi all'elenco.
Congratulazioni!
È stata completata questa esercitazione interattiva dedicata agli elenchi. Si tratta dell'introduzione finale all'esercitazione interattiva su C#. È possibile visitare il sito Web .NET per scaricare .NET SDK, creare un progetto nel computer e continuare a scrivere codice. La sezione "Passaggi successivi" consente di tornare a queste esercitazioni.
Per altre informazioni sulle raccolte .NET, vedere gli articoli seguenti:
Hai un problema con questa sezione? In caso di problemi, fornisci feedback per contribuire al miglioramento della sezione.