Gyakran szükségünk lehet olyan adatszerkezetre, amikor az összetartozó adatok nem azonos típusúak, azonban egyszerre akarjuk valamiképpen kezelni őket. Például egy embernek tárolni akarjuk a nevét (string), anyja nevét (string), a születésének évét (szám), testmagasságát (szám), nemét (igen/nem), stb... Ilyenkor célszerűen jó lenne egy ember nevére egy változóval hivatkozni és az embert leíró tulajdonságokat egyesével elérni. (Adatbázis kezelés esetén például egy tábla egy rekordjáról beszélünk ilyenkor).
A struktúra létrehozása az alábbi:
struct ember
{
string nev;
string anyjaneve;
int szukev;
int testmagassag;
boolean nem;
}
A fenti kódot célszerű a Main() fölé elhelyezni a kódban.
A láthatósággal kapcsolatban:
A struktúra tagok elé public jellemzőt kell írni, ha a program bármelyik részéből szeretnénk elérni. Ekkor helyesen így néz ki a fenti kód:
struct ember
{
public string nev;
public string anyjaneve;
public int szukev;
public int testmagassag;
public boolean nem;
}
Ekkor már a main() függvényben el tudjuk érni a struktúra definícióját és tudunk értékeket is adni az egyes adattagoknak. A public és más módosítók jelentését az Objektum Orientált Programozásnál fogjuk megtárgyalni.
Ha létrehoztunk egy ember nevű struktúrát, akkor ez egy összetett adattípus, amelynek értéket az alábbi módon adhatunk.
ember Pista = new ember();
A Pista nevű változó tulajdonságait egyesével tudjuk megadni. Ha létrehozunk egy másik, ugyanolyan struktúra típussal rendelkező változót, akkor a változók egymás között átadhatják az értéküket. A változók minden eleme (tulajdonsága) átkerül a másik változóba.
Pista.nev = "Kis Pista";
Pista.nem = True;
Pista.szulev = 1999;
// értékadás
ember Pista2 = new ember();
Pista2 = Pista;
Console.WriteLine(Pista2.szulev);
Struktúrákból is lehet tömböket készíteni:
int n = 10;
ember[] emberek = new ember[n];
...
for(int i=0; i< n; i++){
Console.WriteLine(ember[i].szulev); //kiírja az emberek születési éveit...
}