Megtudhatja, hogyan kezelheti az adatgyűjtést a T> listával<a C-ben#

Ez a bevezető oktatóanyag bemutatja a C#-nyelvet és az osztály alapjait List<T> .

Előfeltételek

Az oktatóanyag azt várja, hogy a gép be van állítva a helyi fejlesztéshez. Lásd: A helyi környezet beállítása telepítési utasításokhoz és az alkalmazásfejlesztés áttekintése a .NET-ben.

Ha inkább helyi környezet beállítása nélkül szeretné futtatni a kódot, tekintse meg az oktatóanyag interaktív böngészőben elérhető verzióját.

Példa egy egyszerű listára

Hozzon létre egy list-tutorial nevű könyvtárat. Állítsa be az aktuális könyvtárat, és futtassa a következőt dotnet new console: .

Fontos

A .NET 6 C#-sablonjai legfelső szintű utasításokat használnak. Előfordulhat, hogy az alkalmazás nem egyezik a cikkben szereplő kóddal, ha már frissített a .NET 6-ra. További információt az Új C#-sablonok legfelső szintű utasítások létrehozása című cikkben talál.

A .NET 6 SDK implicit irányelvek készletét is hozzáadja global using az alábbi SDK-t használó projektekhez:

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

Ezek az implicit global using irányelvek tartalmazzák a projekttípus leggyakoribb névtereit.

További információkért tekintse meg az implicit irányelvek használatával foglalkozó cikket.

Nyissa meg a Program.cs fájlt a kedvenc szerkesztőjében, és cserélje le a meglévő kódot a következőre:

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

Cserélje le <name> a elemet a saját nevére. Mentse a Program.cs fájlt. A kipróbálásához írja be dotnet run a konzolablakba.

Létrehozott egy sztringlistát, hozzáadott három nevet a listához, és kinyomtatta a neveket az összes CAPS-ben. A korábbi oktatóanyagokban megismert fogalmakat használva végighaladhat a listán.

A nevek megjelenítésére használt kód a sztringinterpoláció funkcióját használja. Ha a $ karaktert megelőzistring, C#-kódot ágyazhat be a sztringdeklarációba. A tényleges sztring lecseréli a C#-kódot a létrehozott értékre. Ebben a példában a helyére az {name.ToUpper()} összes nevet nagybetűkké konvertálja, mivel Ön a metódust ToUpper hívta.

Vizsgáljuk meg tovább.

Lista tartalmának módosítása

A létrehozott gyűjtemény a típust List<T> használja. Ez a típus elemek sorozatait tárolja. Megadhatja a szögletes zárójelek közötti elemek típusát.

Ennek List<T> a típusnak az egyik fontos eleme, hogy növekedhet vagy zsugorodhat, így elemeket adhat hozzá vagy távolíthat el. Adja hozzá ezt a kódot a program végén:

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

Két további nevet adott hozzá a lista végéhez. Az egyiket is eltávolította. Mentse a fájlt, és a kipróbálásához írja be a következőt dotnet run : .

A List<T> lehetővé teszi az egyes elemek index szerinti hivatkozását is. A lista neve után helyezze el az indexet [ a és ] a token között. A C# az első indexhez 0-t használ. Adja hozzá ezt a kódot közvetlenül az imént hozzáadott kód alá, és próbálja ki:

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

A lista végén túl nem férhet hozzá az indexhez. Ne feledje, hogy az indexek 0-nál kezdődnek, így a legnagyobb érvényes index eggyel kevesebb, mint a lista elemeinek száma. Ellenőrizheti, hogy a lista mennyi ideig használja a tulajdonságot Count . Adja hozzá a következő kódot a program végén:

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

Mentse a fájlt, és írja be dotnet run újra az eredményt.

Listák keresése és rendezése

A mintáink viszonylag kis listákat használnak, de az alkalmazások gyakran létrehozhatnak sok további elemet tartalmazó listákat, néha ezres számozással. A nagyobb gyűjtemények elemeinek kereséséhez különböző elemeket kell keresnie a listában. A IndexOf metódus megkeres egy elemet, és visszaadja az elem indexét. Ha az elem nem szerepel a listában, IndexOf a következőt adja -1vissza: . Adja hozzá ezt a kódot a program aljára:

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

}

A lista elemei is rendezhetők. A Sort metódus a lista összes elemét normál sorrendben rendezi (sztringek betűrendben). Adja hozzá ezt a kódot a program aljára:

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

Mentse a fájlt, és írja be a parancsot dotnet run a legújabb verzió kipróbálásához.

A következő szakasz megkezdése előtt helyezze át az aktuális kódot egy külön metódusba. Ez megkönnyíti egy új példa használatának megkezdését. Helyezze el az összes kódot, amelyet egy nevű új metódusban WorkWithStrings()írt. Hívja meg ezt a metódust a program tetején. Ha végzett, a kódnak így kell kinéznie:

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

Más típusú listák

Eddig a típust használta a string listákban. Hozzunk létre egy List<T> másik típust. Hozzunk létre egy számkészletet.

A hívás WorkWithStrings()után adja hozzá a következőket a programhoz:

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

Ez létrehozza az egész számok listáját, és az első két egész számot 1 értékre állítja. Ez a Fibonacci-sorozat első két értéke, egy számsorozat. Minden következő Fibonacci-szám az előző két szám összegének megadásával található. Adja hozzá az interaktív ablakhoz a következő kódot:

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

fibonacciNumbers.Add(previous + previous2);

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

Mentse a fájlt, és írja be a parancsot dotnet run az eredmények megtekintéséhez.

Tipp

Ha csak erre a szakaszra szeretne koncentrálni, megjegyzést fűzhet a meghívást hívó WorkWithStrings();kódhoz. Csak tegyen két / karaktert a hívás elé a következő módon: // WorkWithStrings();.

Feladat

Nézze meg, hogy össze tudja-e állítani az ebből és a korábbi leckékből származó fogalmakat. Bontsa ki az eddigieket a Fibonacci Numbers segítségével. Próbálja meg meg írni a kódot, hogy létrehozza az első 20 számot a sorozatban. (Tippként a 20. Fibonacci szám 6765.)

Feladat ellenőrzése

Egy példamegoldást a GitHubon található kész mintakóddal tekinthet meg.

A ciklus minden iterációja során a lista utolsó két egészét veszi fel, összegzi azokat, és hozzáadja ezt az értéket a listához. A hurok addig ismétlődik, amíg 20 elemet nem ad hozzá a listához.

Gratulálunk, befejezte a lista oktatóanyagát. További oktatóanyagokat saját fejlesztési környezetében folytathat.

A típussal kapcsolatos további tudnivalókat List a gyűjteményekről szóló .NET-alapismeretek című cikkben talál. Számos más gyűjteménytípust is megismerhet.