Struktúrák
Amennyiben több, különböző típusú, de összetartozó adatot szeretnénk tárolni a C# programunkban, létrehozhatunk nekik egy
adatstruktúrát a struct
kulcsszó használatával. Bár a struktúrák sokmindenben hasonlítanak az osztályokra, mégis
sokmindenben egyszerűbbek azoknál. A legegyszerűbb lehetséges felhasználásuk, ha egyszerűen nyilvános változókat hozunk benne létre
az egyes letárolandó adatoknak, például így:
struct konyv
{
public string cim;
public string szerzo;
public int oldalszam;
}
Figyeljük meg a kódrészletben a változók neve előtti public
kulcsszót! Ha szeretnénk, hogy a struktúra egyes tulajdonságait
elérjük, olvashassuk, módosíthassuk a struktúrán kívüli kódból is, akkor használnunk kell ezt a jelölőt! Most, hogy definiáltuk a
struktúránkat, létre is hozhatunk belőle egy példányt, és kitölthetjük az adataival:
konyv szjg;
szjg.cim = "Szent Johanna Gimi 1.";
szjg.szerzo = "Leiner Laura";
szjg.oldalszam = 386;
A struktúrák esetén nem feltétlen szükséges létrehozáskor a new
kulcsszó használata. Ha van a struktúrában konstruktor,
akkor annak meghívásához természetesen kell a new
, de létrehozhatunk példányt konstruktor használata nélkül is, ekkor minden
érték üres marad, és azokat sorra megadhatjuk a mintának megfelelően.
Struktúrák a gyakorlatban
A struktúrákból persze nem csak egy-egy példányt tudunk létrehozni, hanem akár tömbökhöz, listákhoz is használhatjuk. Ha például egy könyvtári nyilvántartáshoz szükségünk van 100 db könyvre a fentebbi struktúrával, akkor simán készíthetünk belőlük egy tömböt:
konyv[] könyvtár = new konyv[100];
Vagy akár egy listát is:
List<konyv> könyvespolc = new List<konyv>();
Konstruktor
A struktúrákhoz lehetőség van ún. konstruktorok létrehozására. A konstruktor egy olyan eljárás, amit az adott adatszerkezet kezdeti állapotának beállítására használhatunk. Ha például tudjuk, hogy a könyveinket minden esetben úgy fogjuk létrehozni, hogy rögtön a létrehozáskor tudjuk a könyv címét, a szerzőjét és az oldalszámát is, készíthetünk egy konstruktort, ami ezt a három információt beállítja, így le tudjuk rövidíteni a kódunkat a későbbiekben. Hozzunk létre egy konstruktort!
struct konyv
{
public string cim;
public string szerzo;
public int oldalszam;
public konyv(string Cim, string Szerzo, int Oldalszam)
{
this.cim = Cim;
this.szerzo = Szerzo;
this.oldalszam = Oldalszam;
}
}
Innentől kezdve ha szeretnék létrehozni egy új könyvet, megtehetem így is:
konyv szjg = new konyv("Szent Johanna Gimi 1.","Leiner Laura",386);
Amennyiben több különféle paraméterezéssel is jöhet létre könyv a programunkon belül, úgy persze több konstruktor létrehozására is van lehetőség, fontos azonban, hogy a konstruktorok eltérő számú/típusú paramétereket kell hogy fogadjanak. Ha pl. gyakran olvasunk be CSV fájlból is könyveket, készíthetünk erre is egy konstruktort:
struct konyv
{
public string cim;
public string szerzo;
public int oldalszam;
public konyv(string Cim, string Szerzo, int Oldalszam)
{
this.cim = Cim;
this.szerzo = Szerzo;
this.oldalszam = Oldalszam;
}
public konyv(string csvsor)
{
string[] darabok = csvsor.Split(';');
this.cim = darabok[0];
this.szerzo = darabok[1];
this.oldalszam = Convert.ToInt32(darabok[2]);
}
}
Ezzel most már két lehetőségünk is van könyvek létrehozására:
konyv szjg = new konyv("Szent Johanna Gimi 1.","Leiner Laura",386);
konyv eredet = new konyv("Eredet;Dan Brown;574");
Struktúrák eljárásokkal
Hamarosan...