Delen via


Meer informatie over het beheren van gegevensverzamelingen met Lijst<T> in C#

Deze inleidende zelfstudie biedt een inleiding tot de C#-taal en de basisbeginselen van de List<T> klas.

Vereisten

In de zelfstudie wordt verwacht dat u een computer hebt ingesteld voor lokale ontwikkeling. Zie Uw lokale omgeving instellen voor installatie-instructies en een overzicht van toepassingsontwikkeling in .NET.

Als u de code liever uitvoert zonder dat u een lokale omgeving hoeft in te stellen, raadpleegt u de interactieve versie van deze zelfstudie.

Voorbeeld van een eenvoudige lijst

Maak een map met de naam list-tutorial. Maak dat de huidige map en voer uit dotnet new console.

Belangrijk

De C#-sjablonen voor .NET 6 gebruiken instructies op het hoogste niveau. Uw toepassing komt mogelijk niet overeen met de code in dit artikel als u al een upgrade naar .NET 6 hebt uitgevoerd. Zie het artikel over Nieuwe C#-sjablonen genereren instructies op het hoogste niveau voor meer informatie

De .NET 6 SDK voegt ook een set implicieteglobal using instructies toe voor projecten die gebruikmaken van de volgende SDK's:

  • Microsoft.NET.Sdk
  • Microsoft.NET.Sdk.Web
  • Microsoft.NET.Sdk.Worker

Deze impliciete global using instructies bevatten de meest voorkomende naamruimten voor het projecttype.

Zie het artikel over impliciete gebruiksrichtlijnen voor meer informatie

Open Program.cs in uw favoriete editor en vervang de bestaande code door het volgende:

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

Vervang door <name> uw naam. Sla Program.cs op. Typ dotnet run in het consolevenster om het te proberen.

U hebt een lijst met tekenreeksen gemaakt, drie namen aan die lijst toegevoegd en de namen in alle CAPS-bestanden afgedrukt. U gebruikt concepten die u in eerdere zelfstudies hebt geleerd om de lijst te doorlopen.

De code voor het weergeven van namen maakt gebruik van de functie tekenreeksinterpolatie . Wanneer u het teken voorafgaat aan een string$ , kunt u C#-code insluiten in de tekenreeksdeclaratie. De werkelijke tekenreeks vervangt die C#-code door de waarde die wordt gegenereerd. In dit voorbeeld wordt de {name.ToUpper()} vervangen door elke naam, geconverteerd naar hoofdletters, omdat u de methode hebt ToUpper aangeroepen.

Laten we blijven verkennen.

Lijstinhoud wijzigen

De verzameling die u hebt gemaakt, gebruikt het List<T> type. Met dit type worden reeksen elementen opgeslagen. U geeft het type van de elementen tussen de punthaken op.

Een belangrijk aspect van dit List<T> type is dat het kan groeien of verkleinen, zodat u elementen kunt toevoegen of verwijderen. Voeg deze code toe aan het einde van uw programma:

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

U hebt nog twee namen toegevoegd aan het einde van de lijst. U hebt er ook een verwijderd. Sla het bestand op en typ dotnet run om het te proberen.

Met de List<T> kunt u ook verwijzen naar afzonderlijke items per index . U plaatst de index tussen [ en ] tokens na de naam van de lijst. C# gebruikt 0 voor de eerste index. Voeg deze code toe direct onder de code die u zojuist hebt toegevoegd en probeer het:

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

U hebt geen toegang tot een index buiten het einde van de lijst. Houd er rekening mee dat indexen beginnen bij 0, dus de grootste geldige index is één kleiner dan het aantal items in de lijst. U kunt controleren hoe lang de lijst de Count eigenschap gebruikt. Voeg de volgende code toe aan het einde van uw programma:

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

Sla het bestand op en typ dotnet run nogmaals om de resultaten te zien.

Lijsten zoeken en sorteren

In onze voorbeelden worden relatief kleine lijsten gebruikt, maar uw toepassingen maken vaak lijsten met veel meer elementen, soms met duizenden. Als u elementen in deze grotere verzamelingen wilt vinden, moet u in de lijst zoeken naar verschillende items. De IndexOf methode zoekt naar een item en retourneert de index van het item. Als het item niet in de lijst voorkomt, IndexOf retourneert -1. Voeg deze code toe aan de onderkant van uw programma:

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}");

}

De items in uw lijst kunnen ook worden gesorteerd. De Sort methode sorteert alle items in de lijst in hun normale volgorde (alfabetisch voor tekenreeksen). Voeg deze code toe aan de onderkant van uw programma:

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

Sla het bestand op en typ dotnet run om deze nieuwste versie te proberen.

Voordat u begint met de volgende sectie, verplaatsen we de huidige code naar een afzonderlijke methode. Dat maakt het gemakkelijker om aan de slag te gaan met een nieuw voorbeeld. Plaats alle code die u hebt geschreven in een nieuwe methode met de naam WorkWithStrings(). Roep die methode bovenaan uw programma aan. Wanneer u klaar bent, moet uw code er als volgt uitzien:

WorkWithStrings();

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

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

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

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

    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}");

    }

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

Lijsten met andere typen

U hebt het string type tot nu toe in lijsten gebruikt. Laten we een List<T> maken met een ander type. We gaan een set getallen maken.

Voeg het volgende toe aan uw programma nadat u hebt aangeroepen WorkWithStrings():

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

Hiermee maakt u een lijst met gehele getallen en stelt u de eerste twee gehele getallen in op de waarde 1. Dit zijn de eerste twee waarden van een Fibonacci-reeks, een reeks getallen. Elk volgende Fibonacci-getal wordt gevonden door de som van de vorige twee getallen te nemen. Voeg deze code toe:

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

fibonacciNumbers.Add(previous + previous2);

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

Sla het bestand en het type dotnet run op om de resultaten weer te geven.

Tip

Als u zich alleen op deze sectie wilt concentreren, kunt u commentaar toevoegen aan de code die aanroept WorkWithStrings();. Plaats twee / tekens voor de aanroep als volgt: // WorkWithStrings();.

Uitdaging

Kijk of u enkele concepten uit deze en eerdere lessen kunt samenstellen. Breid uit wat u tot nu toe hebt gemaakt met Fibonacci Numbers. Probeer de code te schrijven om de eerste 20 getallen in de reeks te genereren. (Het 20e Fibonacci-getal is 6765.)

Uitdaging voltooien

U kunt een voorbeeldoplossing bekijken door de voltooide voorbeeldcode op GitHub te bekijken.

Bij elke herhaling van de lus neemt u de laatste twee gehele getallen in de lijst, telt u deze op en voegt u die waarde toe aan de lijst. De lus wordt herhaald totdat u 20 items aan de lijst hebt toegevoegd.

Gefeliciteerd, u hebt de zelfstudie voor de lijst voltooid. U kunt doorgaan met aanvullende zelfstudies in uw eigen ontwikkelomgeving.

Meer informatie over het werken met het List type vindt u in het artikel .NET-basisprincipes over verzamelingen. U leert ook over veel andere verzamelingstypen.