Pole chápeme jako množinu proměnných stejného datového typu. S takovým polem pak zacházíme jako s celkem. Na jednotlivé prvky pole (proměnné) se můžeme odkazovat pomocí jejich indexů pole a poté s nimi pracovat jako s obyčejnými proměnnými. Každý počáteční prvek pole v C# má index 0, pokud tedy máme pole délky N, index posledního prvku bude N-1.
V C# existují dva způsoby, jak deklarovat pole. První ze způsobů více naznačuje objektovost polí. Ten si ukážeme jen "ve zkratce", více se budeme zabývat druhým, klasickým a určitě i praktičtějším způsobem.
Jazyk C# umožňuje vytvořit instanci pole pomocí statické metody System.Array.CreateInstance(). Tento způsob více odpovídá objektové charakteristice tvorby objektů.
using System; ... Array pole = Array.CreateInstance(typeof(int), 4); |
Vytvořili jsme instanci třídy Array typu int se čtyřmi prvky. Pokud budeme toto pole chtít naplnit, nemůžeme již k jednotlivým prvkům přistupovat pomocí indexů, jako jsme byli zvyklí u běžných polí. Je třeba k těmto prvkům přistupovat pomocí metod SetValue() a GetValue().
... pole.SetValue(3, 0); // na nultou pozici pole vlozime cislo 3 Console.WriteLine(pole.GetValue(0)); // vytiskneme 0. prvek pole ... |
Stejným způsobem, ale i s možností přistupovat k jednotlivým prvkům pole pomocí indexů, můžeme tehdy, pokud vytvoříme pole druhou (následující) konstrukcí. První způsob tedy opustíme.
Pro jednorozměrná pole v jazyce C# platí deklarace:
typ[] nazev_pole;
Pokud chceme deklarovat vícerozměrné pravidelné pole, píšeme nejprve typ pole, následují hranaté závorky, do kterých napíšeme pouze čárky podle toho, kolikarozměrné pole chceme používat. Příklad: Deklarace 2-rozměrného pole s názvem pole typu int
int[,] pole = new int[2,2] { {2, 1}, {4, 3} }; |
V jazyce C# lze používat i nepravidelná pole. Nepravidelná pole se vyznačují různou délkou jednotlivých "řádků" pole. Pokud například chceme vytvořit pole, které má v prvním řádku 3 prvky a v druhém 2 prvky, provedeme to následovně:
int[][] pole; pole = new int[2]; pole[0] = new int[3]; pole[1] = new int[2]; |
Přístup k jednotlivým prvkům pole se pak provádí následovně: pole[0][0] nám vrátí hodnotu prvku v první řadě a prvním sloupci.
Spousta užitečných operací, které s poli provádíme, se nachází ve třídě System.Array.
Místo obvykle používaného cyklu pro kopírování pole x do pole y:
for(int i=0; i<=x.Length; i++) y[i] = x[i]; |
lze použít metodu CopyTo() dostupnou všem polím
CopyTo() x.CopyTo(y,0); |
kde první parametr udává cílové pole, do kterého se má kopírovat druhý parametr udává počáteční index, na který se bude ukládat. Pokud cílové pole od daného počátečního indexu nebude dostatečně dlouhé, vyvolá se výjimka.
Třída Array nabízí také metodu pro vyhledávání hodnoty v poli Array.BinarySearch(), implementuje i třídění polí metodou Array.Sort(), převrácení pole Array.Reverse(). Pro vrácení indexu prvku na základě rovnosti hodnot (objektů) slouží metody Array.IndexOf() a LastIndexOf().
Ukázkový příklad demonstrující některé metody třídy Array si můžete vyzkoušet zde. |