Tablica wielowymiarowa.
Żeby nie było tak prosto oprócz tablic jednowymiarowych, opisanych w poprzednim podrozdziale, istnieją także tablice wielowymiarowe. W takiej tablicy jedno pole (jeden element) jest reprezentowany przez dwa index-y. Do naszej tabeli z poprzedniego rozdziału (przechowującej polskie nazwy miesięcy) chcemy dopisać angielskie nazwy miesięcy. Poniżej wizualizacja takiej tabeli wielowymiarowej.
Poniżej przykład deklaracji tablicy wielowymiarowej.
// deklaracja tablicy wielowymiarowej string[,] nazwyMiesiecy;
Zwróć uwagę, że w nawiasie kwadratowym jest przecinek sugerujący, że jest to tablica wielowymiarowa (jeden przecinek sugeruje, że jest to tablica dwu wymiarowa).
Następnie musimy naszą tablicę zainicjalizować.
//inicjalizacja tablicy wielowymiarowej [2-wiersze,12-kolumn] nazwyMiesiecy = new string[2, 12];
Teraz pozostaje nam wprowadzić do odpowiednich pól wartości naszej tablicy, co prezentuje poniższy kod.
Listing 12.1 Wprowadzanie wartości do tablicy dwu wymiarowej komórka po komórce.
//przypisanie wartości do poszczególnych pól tablicy wielowymiarowej nazwyMiesiecy[0, 0] = "Styczeń"; nazwyMiesiecy[1, 0] = "January"; nazwyMiesiecy[0, 1] = "Luty"; nazwyMiesiecy[1, 1] = "February"; nazwyMiesiecy[0, 2] = "Marzec"; nazwyMiesiecy[1, 2] = "March"; nazwyMiesiecy[0, 3] = "Kwiecień"; nazwyMiesiecy[1, 3] = "April"; nazwyMiesiecy[0, 4] = "Maj"; nazwyMiesiecy[1, 4] = "May"; nazwyMiesiecy[0, 5] = "Czerwiec"; nazwyMiesiecy[1, 5] = "June"; nazwyMiesiecy[0, 6] = "Lipiec"; nazwyMiesiecy[1, 6] = "July"; nazwyMiesiecy[0, 7] = "Sierpień"; nazwyMiesiecy[1, 7] = "August"; nazwyMiesiecy[0, 8] = "Wrzesień"; nazwyMiesiecy[1, 8] = "September"; nazwyMiesiecy[0, 9] = "Październik"; nazwyMiesiecy[1, 9] = "Oktober"; nazwyMiesiecy[0, 10] = "Listopad"; nazwyMiesiecy[1, 10] = "November"; nazwyMiesiecy[0, 11] = "Grudzień"; nazwyMiesiecy[1, 11] = "December";
Zwróćcie uwagę, że indeksy w pionie (wierszy) także zaczynają się od wartości „0”. Żeby odwołać się do konkretnej wartości należy wskazać index wiersza i po przecinku index kolumny np. jeżeli chcemy odwołać się do wartości „November” wpiszemy poniższy kod.
// wyświetlenie na ekranie wartości "November" z tablicy Console.WriteLine(nazwyMiesiecy[1,10]);
Dokładnie tak samo jak przy tablicach jednowymiarowych istnieje możliwość zapisu w jednym kroku deklaracji, inicjalizacji i przypisania wartości do pól tablicy wielowymiarowej. Poniższy kod prezentuje jeden ze sposobów przypisania wartości do tablicy dwu wymiarowej.
Listing 12.2 Wprowadzanie wartości do tablicy dwu wymiarowej w jednym kroku – sposób 1.
// deklaracja,inicjalizacja i przypisanie wartości do tablicy dwu wymiarowej w jednym kroku string[,] nazwyMiesiecy = new string[,] { {"Styczeń","January"}, {"Luty","February"}, {"Marzec","March"}, {"Kwiecień","April"}, {"Maj","May"}, {"Czeriec","June"}, {"Lipiec","July"}, {"Sierpień","August"}, {"Wrzesień","September"}, {"Październik","October"}, {"Listopad","November"}, {"Grudzień","December"} };
Poniżej wizualizacja tablicy dwu wymiarowej z powyższego listingu.
Tabela 12.2 Wizualizacja tablicy dwu wymiarowej z listingu 12.2
Zwróćcie uwagę, że teraz polskie nazwy miesięcy tworzą pierwszą kolumnę a angielskie nazwy tworzą drugą kolumnę. Odwołanie się np. do wartości „November” będzie wyglądało następująco.
// wyświetlenie na ekranie wartości "November" z tablicy Console.WriteLine(nazwyMiesiecy1[10, 1]);
Przypisania takich samych wartości do tablicy dwu wymiarowej możemy zrealizować także w inny sposób.
Listing 12.3 Wprowadzanie wartości do tablicy dwu wymiarowej w jednym kroku – sposób 2.
// deklaracja, inicjalizacja i przypisanie wartości do tablicy dwu wymiarowej w jednym kroku string[,] nazwyMiesiecy = new string[,] { {"Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopac","Grudzień"}, {"January","February","March","April","May","June","July","August","September","October","November","December"} };
Natomiast w sposobie drugim polskie nazwy tworzą pierwszy ale wiersz a nazwy angielskie są umieszczone w drugim wierszy (inaczej niż w przykładnie z listingu 12.2). Wizualizacja tablicy dwu wymiarowej z listingu 12.3 prezentuje się następująco.
Tabela 12.2 Wizualizacja tabeli dwu wymiarowej z listingu 12.3.
I gdybyśmy tutaj chcieli się odwołać także do wartości „November” musielibyśmy wpisać.
// wyświetlenie na ekranie wartości z tablicy Console.WriteLine(nazwyMiesiecy2[1, 10]);