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.
-
-
12.1 Wizualizacja tabeli dwu wymiarowej.
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
-
-
Rysunek 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.
-
-
Rysunek 12.1 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]);
