C# – Array osztály


A System névtérben definiált Array (tömb) osztály minden folytonos helyfoglalású tömb statikus függvényei segítik a tömbök hatékony kezelését. Bizonyos megoldások a tömbobjektumok tulajdonságai és függvényei révén is megvalósíthatók. A tömbökkel már megismerkedtünk az előzőekben, most nézzük meg néhány tulajdonságát, és az osztály függvényeit.

Tulajdonságai

Két tulajdonságot nézzünk meg. A Rank tulajdonság a tömb dimenzióját, a Length tulajdonság pedig a tömb elemeinek a számát adja meg. Tekintsünk ezekre egy egyszerű példát.

int[] tomb1 = new int[20];
int[,] tomb2 = new int[10,20];

int dimenzio_szam1 = tomb1.Rank;
int elem_szam1 = tomb1.Length;

int dimenzio_szam2 = tomb2.Rank;
int elem_szam2 = tomb2.Length;

Console.WriteLine(“Az első tömb dimenziója: {0}”, dimenzio_szam1); //1
Console.WriteLine(“Az első tömb elemszáma: {0}”, elem_szam1); //20

Console.WriteLine(“\nA második tömb dimenziója: {0}”, dimenzio_szam2); //2
Console.WriteLine(“A második tömb elemszáma: {0}”, elem_szam2); //200

Egy másik példa string típusú tömbökkel.

string[] tomb1 = new string[5] {“alma”, “körte”, “szilva”, “dió”, “szőlő”};
string[,] tomb2 = new string[2, 3] {{“asztal”,”szék”,”szekrény” },{“pad”,”ágy”,”kanapé” }};

int dimenzio_szam1 = tomb1.Rank;
int elem_szam1 = tomb1.Length;

int dimenzio_szam2 = tomb2.Rank;
int elem_szam2 = tomb2.Length;

Console.WriteLine(“Az első tömb dimenziója: {0}”, dimenzio_szam1); //1
Console.WriteLine(“Az első tömb elemszáma: {0}”, elem_szam1); //5

Console.WriteLine(“\nA második tömb dimenziója: {0}”, dimenzio_szam2); //2
Console.WriteLine(“A második tömb elemszáma: {0}”, elem_szam2); //6

Függvényei

Az Array osztály statikus függvényeinek többsége egydimenziós tömbökkel működik helyesen. Bizonyos műveletek a többdimenziós tömböket, mint Length hosszú vektorokat kezelik. Nézzünk most meg egy-két, az Array  osztályon használható függvényt.

Clear( )

A tömb elemeinek nullázását végzi, kijelölve a kezdőelemet és a nullázandó elemek számát. Az alábbi programrészletben egy egész, és egy string típusú tömbön láthatjuk a Clear( ) függvény használatát.

int[] tomb1 = new int[5] {34, 12, 23, 51, 67};
string[,] tomb2 = new string[2, 3] {{“asztal”,”szék”,”szekrény” },{“pad”,”ágy”,”kanapé” }};

Console.Write(“Az első tömb elemei: “); //34, 12, 23, 51, 67
foreach (var tombelem in tomb1)
{
     Console.Write(” {0}”,tombelem);
}
Array.Clear(tomb1,0,tomb1.Length);
Console.Write(“\nAz első tömb elemei kiürítés után: “); //0, 0, 0, 0, 0
foreach (var tombelem in tomb1)
{
     Console.Write(” {0}”, tombelem);
}

Console.Write(“\n\nA második tömb elemei: “); //asztal szék szekrény pad ágy kanapé
foreach (var tombelem in tomb2)
{
     Console.Write(” {0}”, tombelem);
}
Array.Clear(tomb2, 0, tomb2.Length);
Console.Write(“\nA második tömb elemei kiürítés után: “); //6 darab üres karakter
foreach (var tombelem in tomb2)
{
     Console.Write(” {0}”, tombelem);
 }

Copy( )

A forrástömb adott pozíciójától, adott számú elemének másolása a cél tömbbe, adott pozíciótól kezdve. Most nézzük ezt meg az alábbi példán keresztül. Mi is történik? Az első tömb első pozíciójától (vagyis a 34 után) két elemet (a 12-őt és a 23-at) átmásoljuk a második tömb második pozíciójától kezdve (azaz a 90 után) úgy, hogy a következő két karaktert cseréljük le (a 95-öt és a 96-ot)!

int[] tomb1 = new int[5] {34, 12, 23, 51, 67};
int[] tomb2 = new int[8] {80, 90, 95, 96, 98, 99, 100, 101};
Array.Copy(tomb1, 1, tomb2, 2,2);
foreach (var tombelem in tomb2)
{
Console.Write(” {0}”,tombelem); //80 90 12 23 98 99 100 101
}

Ha egy tömb teljes tartalmát át akarjuk másolni egy másik tömbbe, akkor ezt is megtehetjük. Nézzük meg, hogyan. Ügyeljünk arra, hogy a másik tömb elemszáma és típusa egyezzen meg az eredeti tömbével!

int[] tomb1 = new int[5] { 34, 12, 23, 51, 67 };
int[] tomb2 = new int[5];

Array.Copy(tomb1, tomb2, tomb1.Length);

Console.Write(“Az eredeti tömb elemei:\t”);
foreach (var tombelem in tomb1)
{
Console.Write(” {0}”, tombelem); //34, 12, 23, 51, 67
}

Console.Write(“\nAz új tömb elemei:\t”);
foreach (var tombelem in tomb2)
{
Console.Write(” {0}”, tombelem); //34, 12, 23, 51, 67
}

Reverse( )

A tömb elemek sorrendjét megfordítja.

int[] tomb1 = new int[5] { 34, 12, 23, 51, 67 };
string[] tomb2 = new string[4] { “sas”, “fecske”, “galamb”, “holló” };

Array.Reverse(tomb1);
foreach (var tombelem in tomb1)
{
Console.Write(” {0}”, tombelem); //67 51 23 12 34
}

Console.WriteLine();
Array.Reverse(tomb2);
foreach (var tombelem in tomb2)
{
Console.Write(” {0}”, tombelem); //holló galamb fecske sas
}

Sort( )

A tömb elemeit sorba rendezi.

int[] tomb1 = new int[5] { 34, 12, 23, 51, 67 };
string[] tomb2 = new string[4] { “sas”, “fecske”, “galamb”, “holló” };

Array.Sort(tomb1);
Array.Sort(tomb2);

foreach (var tombelem in tomb1)
{
Console.Write(” {0}”, tombelem); //12 23 34 51 67
}

Console.WriteLine();

foreach (var tombelem in tomb2)
{
Console.Write(” {0}”, tombelem); //fecske galamb holló sas
}