Ismerje meg, hogyan kezelheti az adatgyűjtéseket az általános listatípus használatával
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.
Tipp.
Ha kódrészletet szeretne beilleszteni a fókusz módba, használja a billentyűparancsot (Ctrl + v vagy cmd + v).
Listák létrehozása
Futtassa az alábbi kódot az interaktív ablakban. Válassza az Enter fókusz mód gombot. Ezután írja be a következő kódblokkot az interaktív ablakban (cserélje le <name>
a nevét), és válassza a Futtatás lehetőséget:
var names = new List<string> { "<name>", "Ana", "Felipe" };
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Ha ezt a környezetet használja, kövesse a helyi verzióra vonatkozó utasításokat.
Létrehozott egy sztringlistát, három nevet adott hozzá a listához, és kinyomtatta a neveket az összes CAPS-ben. A korábbi oktatóanyagokban tanult fogalmakat használja a lista végighaladásához.
A neveket megjelenítő kód a sztring interpolációs funkcióját használja. Ha a karaktert string
$
megelőzi, 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 az {name.ToUpper()}
egyes nevek helyett nagybetűket ad vissza, mivel ön String.ToUpper a metódust nevezte el.
Lássunk 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 az elemek típusát a szögletes zárójelek között.
Ennek List<T> a típusnak az egyik fontos eleme, hogy növekedhet vagy zsugorodhat, így elemeket adhat hozzá vagy távolíthat el. Az eredményeket úgy tekintheti meg, hogy módosítja a tartalmat a tartalom megjelenítése után. Adja hozzá a következő kódot a már megírt kód alá (a tartalmat kinyomtató hurok alá):
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. Egy is el lett távolítva. A kódblokk kimenete megjeleníti a kezdeti tartalmat, majd kinyomtat egy üres sort és az új tartalmat.
Ez List<T> lehetővé teszi az egyes elemek index szerinti hivatkozását is. Az elemekhez a jogkivonatok és ]
a [
jogkivonatok használatával férhet hozzá. Adja hozzá a következő kódot a már megírt 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éhez nem férhet hozzá. Ellenőrizheti, hogy a lista mennyi ideig használja a tulajdonságot Count . A kipróbálásához adja hozzá a következő kódot:
Console.WriteLine($"The list has {names.Count} people in it");
Az eredmények megtekintéséhez válassza a Futtatás ismét lehetőséget. 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áink 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
a visszaadott értéket adja -1
vissza. Próbálja ki, hogy hogyan működik. Adja hozzá az alábbi kódot az eddig írtakhoz:
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}");
Előfordulhat, hogy nem tudja, hogy egy elem szerepel-e a listában, ezért mindig ellenőrizze a visszaadott indexet IndexOf. Ha igen -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 listatípust string
használta. Készítsünk egy List<T> másik típust. Állítsunk össze számokat. Törölje az eddig írt kódot, és cserélje le a következő kódra:
var fibonacciNumbers = new List<int> {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, a 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á 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);
}
Az eredmények megtekintéséhez nyomja le a Run billentyűt ;
Feladat
Nézze meg, hogy összeállíthat-e néhány fogalmat ebből és a korábbi leckékből. Bontsa ki az eddigieket a Fibonacci Numbers 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.)
Feladat ellenőrzése
A következőhöz hasonló kódot írt?
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 ciklus minden iterációjával a lista utolsó két egészét veszi fel, összegzi és hozzáadja ezt az értéket a listához. A ciklus addig ismétlődik, amíg 20 elemet nem ad hozzá a listához.
Gratulálunk!
Elvégezte a lista interaktív oktatóanyagát. Ez a C# interaktív oktatóanyagának utolsó bemutatása. A .NET webhelyre látogatva letöltheti a .NET SDK-t, létrehozhat egy projektet a gépen, és továbbra is kódolódhat. A "Következő lépések" szakaszban visszatérhet ezekhez az oktatóanyagokhoz.
A .NET-gyűjteményekről az alábbi cikkekben tudhat meg többet:
Problémát tapasztalt ezzel a szakasszal kapcsolatban? Ha igen, küldjön visszajelzést, hogy kijavíthassuk a hibát.