[C#] Struktúratömbök

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.