A C# struktúratömb egy olyan adatstruktúra, amely lehetővé teszi, hogy több azonos típusú struktúrát tároljunk egy tömbben. A struct több különböző adatot (mezőt) tartalmazhat, például számokat, stringeket és más típusokat. Ez különösen hasznos lehet, ha különböző típusú adatokat szeretnénk rendszerezett formában tárolni.
Példa egy student struktúra létrehozására:
public struct Student
{
public string Name;
public int Age;
public double GPA;
}
Student struktúrát tartalmazó tömb létrehozása és feltöltése:
Student[] students = new Student[3];
students[0] = new Student { Name = "Alice", Age = 20, GPA = 3.5 };
students[1] = new Student { Name = "Bob", Age = 22, GPA = 3.8 };
students[2] = new Student { Name = "Charlie", Age = 21, GPA = 3.6 };
Ebben a példában a students tömb három Student struktúrát tartalmaz, mindegyik tárolja a hallgató nevét, életkorát és átlagát (Grade Point Average). Ez a megközelítés lehetővé teszi összetett adatok strukturált és áttekinthető tárolását.
Miért hasznosak a struktúratömbök?
- Adatok rendszerezése: Több, különböző típusú adat egységként kezelése.
- Átláthatóság: Az adatok könnyen kezelhetők és áttekinthetők.
- Egyszerű hozzáférés: Az egyes elemek könnyen elérhetők indexek segítségével.
Struktúratömbök vs Objektumok
A C#-ban a struktúrák (struct) és az osztályok (class) is használhatók adatok tárolására és kezelésére, de különböző módon. A struktúrák értéktípusok, ami azt jelenti, hogy közvetlenül a stacken tárolódnak, és minden másolásuk új példányt hoz létre. Ezáltal kevesebb memóriahasználatot eredményezhetnek és gyorsabb hozzáférést biztosíthatnak kisebb adatstruktúrákhoz. Az objektumok (osztályok) viszont referenciatípusok, amelyek a heap-en tárolódnak, és referenciákat (mutatókat) használnak az adatok eléréséhez. Ez lehetővé teszi az öröklődést és a bonyolultabb adatstruktúrák kialakítását, de több memóriahasználattal járhat. Struktúratömbök akkor hasznosak, ha egyszerű adatokat szeretnénk hatékonyan tárolni, míg az objektumok a komplex adatmodellek és viselkedések kezelésére alkalmasabbak.