C# - Tömbök kezelése

C# nyelv 21. rész

forráskód letöltése
Mostani cikkünkben a C# nyelv tulajdonságai közül a tömbök létrehozását, kezelését vizsgáljuk meg részletesebben.
Egy tömb létrehozásánál két alapvető kérdést kell eldöntenünk, milyen típusú elemeket szeretnénk a tömbben tárolni és ezekből mennyit. Deklarációhoz az adott típust kell leírnunk, majd utána a [ ] jelekkel jeleznünk kell a fordító számára, hogy tömböt szeretnénk létrehozni. A new operátor használata után szintén az adott típus jön és a [ ] jelek között most már a tömbünk méretét is meg kell adnunk.
      protected void button1_Click (object sender, System.EventArgs e)
      {
Ha például egy olyan tömbre van szükségünk, mely képes három darab int típusú változó tárolására, akkor ennek deklarációja a következő:
        int[] a = new int[3];
A tömb egyes elemeinek történő értékadáshoz szintén a [ ] karakterek használata válik szükségessé, most viszont a beírandó szám az adott elem sorszáma lesz. Tudnunk kell, hogy bármilyen tömbről is legyen szó, annak az első eleme a nulladik sorszámú lesz. A második eleme lesz az egyes sorszámú, és így tovább. Tehát egy három elemet tartalmazó tömb indexei nullától kettőig tartanak.
        a[0] = 10;
        a[1] = 20;
        a[2] = 30;
Ellenőrzésképpen ki is írjuk egy ListBox-ba a most létrehozott tömb összes elemének tartalmát.
        listBox1.Items.Clear();
        foreach (int i in a)
        {
          listBox1.Items.Add(i.ToString());
        }
      }
A második nyomógombnál úgy hozunk létre tömböt, hogy rögtön a deklarációnál meg is adjuk a tömb elemeinek értékét. Ez esetben nem szükséges megadnunk, hogy hány elemű tömböt szeretnénk létrehozni, hiszen az a tömb megadott elemeinek számából egyértelmű.
      protected void button2_Click (object sender, System.EventArgs e)
      {
Ez esetben tehát csak deklaráljuk a tömböt, mint az előző példánál, de elhagyjuk az elemek számát, viszont { } jelek között meg kell adnunk a tömb elemeinek tartalmát. Alábbi példánál a tömb hat elemet fog tartalmazni. Az első, vagyis a nulladik indexű elem lesz az 1, a második a 2 és így tovább.
        int[] a = new int[] {1, 2, 3, 4, 5, 6};
Ilyen esetben lehetőségünk van még egy egyszerűbb írásmódra is. Az alábbi sor teljesen egyenértékű az előző deklarációval:
//        int[] a = {1, 2, 3, 4, 5, 6};
Ellenőrzésképpen ismét kiírjuk egy ListBox-ba a most létrehozott tömb összes elemének tartalmát.
        listBox1.Items.Clear();
        foreach (int i in a)
        {
          listBox1.Items.Add(i.ToString());
        }
      }
Harmadik példánál arra láthatunk megoldást, hogy miként hozhatunk létre több dimenziójú tömböt.
      protected void button3_Click (object sender, System.EventArgs e)
      {
Ez esetben a tömb deklarációjánál a [ ] jelek között egy vesszőt használunk arra, hogy jelezzük: most kétdimenziós tömböt hozunk létre. Ennél több dimenzió esetén több vesszőt kell használnunk, mindig eggyel kevesebbet, mint ahány dimenziójú tömböt szeretnénk létrehozni.
        int[,] b = 
        {
          {1, 2},
          {10, 20},
          {100, 200}
        };
Amint az látható a fenti példában, az értékadás egy több dimenziójú tömb esetén úgy történik, hogy a { } jelek között történő értékadást egymásba kell ágyaznunk a dimenzió számának függvényében.
Persze értékadásra és kiolvasásra is lehetőség nyílik a deklaráció után, de most már mind a két dimenzió index számát meg kell adnunk ahhoz, hogy a tömb egy elemét elérhessük.
        b[1, 1] = 555;
Végső lépésként ismét csak az ellenőrző kiírás marad, de most már egy kettős ciklusra van szükségünk, hogy a kétdimenziós tömb minden eleme kiírásra kerüljön.
        listBox1.Items.Clear();
        for (int i=0; i<3; i++)
        {
          for (int l=0; l<2; l++)
          {
            listBox1.Items.Add(b[i, l].ToString());
          }
        }
      }
Utolsó példában azt vizsgáljuk meg, hogy miként tudunk egy tömböt egy függvény paramétereként felhasználni.
Készítünk egy Write nevű függvényt, mely paraméterként egy egész számokat tároló tömböt fogad és ennek tartalmát kiírja egy ListBox-ba. A Write paraméterénél az adott típus után a [ ] karakterekkel jelezzük, hogy a fogadandó paraméter tömb típusú.
      protected void Write(int[] a)
      {
        listBox1.Items.Clear();
        foreach (int i in a)
        {
          listBox1.Items.Add(i.ToString());
        }
      }
A függvény meghívásához ezek után szükségünk lesz egy egész számokat tároló tömbre, mely tartalmaz értékeket. Ezt a függvénynek átadni pont ugyanúgy tudjuk, mint bármely más típusú paraméter esetén tennénk azt.
      protected void button4_Click (object sender, System.EventArgs e)
      {
        int[] c = new int[5] {12, 23, 34, 45, 56};  
        Write(c);
      }

C# nyelv cikksorozat