Megosztás a következőn keresztül:


Ismerje meg, hogyan kezelheti az adatgyűjtéseket a List<T> használatával a C-ben#

Ez a bevezető oktatóanyag bemutatja a C# nyelvét és az osztály alapjait.

Ez az oktatóanyag interaktívan tanítja meg a C#-ot a böngészőben C# kód írására, valamint a kód összeállításának és futtatásának eredményeinek megtekintésére. Gyűjteményeket és tömböket létrehozó, módosító és feltáró leckéket tartalmaz. Elsősorban az List<T> osztállyal dolgozik.

Egy egyszerű lista példa

Borravaló

Ha egy kódrészletblokk tartalmazza a "Futtatás" gombot, az a gomb megnyitja az interaktív ablakot, vagy lecseréli a meglévő kódot az interaktív ablakban. Ha a kódrészlet nem tartalmaz "Futtatás" gombot, átmásolhatja a kódot, és hozzáadhatja az aktuális interaktív ablakhoz.

Futtassa az alábbi kódot az interaktív ablakban. Cserélje le <name> a nevére, és válassza a futtatásopciót.

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

Létrehozott egy karakterláncok listáját, három nevet adott hozzá a listához, és kinyomtatta a neveket NAGYBETŰKKEL. A korábbi oktatóanyagokban tanult fogalmakat használja a lista végighaladásához.

A nevek megjelenítésére szolgáló kód a karakterlánc interpolációs funkciót használja. Amikor egy string karaktert egy $ karakterrel megelőz, C#-kódot ágyazhat be a sztringdeklarációba. A tényleges karakterlánc helyettesíti a C#-kódot a létrehozott értékkel. Ebben a példában a {name.ToUpper()} helyére minden nevet lecserél, nagybetűkké alakítva át őket, mert a String.ToUpper metódust meghívta.

Folytassuk a felfedezést.

Lista tartalmának módosítása

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

Ennek a List<T> típusnak az egyik fontos eleme, hogy növekedhet vagy zsugorodhat, így elemeket vehet fel vagy távolíthat el. Miután megjelenítette a tartalmat, az eredményeket úgy tekintheti meg, hogy módosítja azt. Adja hozzá a következő kódot a már írt kód után (a tartalmat kinyomó hurok):

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

További két nevet adott hozzá a lista végéhez. Te is eltávolítottál egyet. A kódblokk kimenete megjeleníti a kezdeti tartalmat, majd kinyomtat egy üres sort és az új tartalmat.

A List<T> lehetővé teszi, hogy az egyes elemekre index szerint is hivatkozzon. Az elemeket a [ és ] jogkivonatok használatával érheti el. Adja hozzá a következő kódot a már írt kód után, é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éhez nem férhet hozzá. Ellenőrizheti, hogy a lista mennyi ideig használja a Count tulajdonságot. Adja hozzá a következő kódot:

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

Válassza a Futtatás újra lehetőséget az eredmények megtekintéséhez. A C#-ban az indexek 0-nál kezdődnek, így a legnagyobb érvényes index eggyel kevesebb, mint a lista elemeinek száma.

Listák keresése és rendezése

A minták viszonylag kis listákat használnak, de az alkalmazások gyakran több elemet tartalmazó listákat hozhatnak létre, néha ezres számokkal. 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-1ad vissza. Próbálja ki, hogy hogyan működik. Adja hozzá az alábbi kódot az eddig írtak után:

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

Előfordulhat, hogy nem tudja, hogy egy elem szerepel-e a listában, ezért mindig ellenőrizze a IndexOfáltal visszaadott indexet. Ha -1, az elem nem található.

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, és futtassa újra:

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

Más típusú listák

Eddig a string típust használtad a listákban. Hozzunk létre egy List<T> egy másik típussal. Állítsunk össze számokat. Törölje az eddig írt kódot, és cserélje le a következő kódra:

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. A Fibonacci-sorozat, amely számok sorozata, két 1-zel kezdődik. Minden következő Fibonacci-szám az előző két szám összegének megadásával található. Adja hozzá 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);
}

Az eredmények megtekintéséhez nyomja le a Futtatás gombot;

Kihívás

Nézze meg, hogy összeállíthat-e néhány fogalmat ebből és a korábbi leckékből. Fejlessze tovább az eddigieket a Fibonacci-számok segítségével. Próbálja meg írni a kódot, hogy létrehozza az első 20 számot a sorozatban. (Tippként a 20. Fibonacci szám 6765.)

Előjött valami ilyesmi?

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

A ciklus minden iterációjával a lista utolsó két egész számát veszi, összegzi őket, és hozzáadja az eredményt a listához. A ciklus addig ismétlődik, amíg 20 elemet nem ad hozzá a listához.

Elvégezte az interaktív listaoktatóanyagot, a C# interaktív oktatóanyagának utolsó részét. Látogasson el a .NET-webhelyre, töltse le a .NET SDK-t, hozzon létre egy projektet a gépen, és folytassa a kódolást. A "Következő lépések" szakaszban visszatérhet ezekhez az oktatóanyagokhoz. Vagy folytathatja az Objektumorientált programozás felfedezése osztályokkal és objektumokkal című oktatóanyagot .

Többet megtudhat a .NET-gyűjteményekről az alábbi cikkekben: