Jason. Cała informatyka w jednym miejscu!

Nie milkną wcale echa na temat tablic w języku C#, gdyż teraz zajmiemy się drugim sposobem deklarowania i definiowania tablic wielowymiarowych. Przedstawiam Wam temat brzmiący "tablica zagnieżdżona w języku C#"!

TABLICA ZAGNIEŻDŻONA W JĘZYKU C# TO W GRUNCIE RZECZY TABLICA TABLIC!

Tablica zagnieżdżona oznacza de facto "przesiadywanie" jednej tablicy w drugiej. To jest ten drugi sposób zapisu tablic wielowymiarowych, z którym mieliście okazję powierzchownie się zapoznać w poprzedniej części:

int[][] numbers;

INICJALIZACJA

Napisałem, że wymaga on nieco innego podejścia podczas obsługi. Po pierwsze, zupełnie inny proces inicjalizacji. Teraz nie podajemy rzędów i kolumn, tylko sam pierwszy wymiar. Istotnie, trzeba skonkretyzować swoje oczekiwania w każdym wymiarze, tylko robi się to później. Piszemy na początku tak:

int[][] numbers = new int[A][];

gdzie za "A", podstawiamy liczbę tablic w tablicy, pisząc dosłownie. Teraz musimy podać konkretną liczbę dla drugiego wymiaru. Nie mogliśmy tego zrobić w tej samej linijce kodu, ponieważ tablice jakimi dysponuje tablica zagnieżdżona w języku C#, muszą być zainicjowane w taki sam sposób OSOBNO!!! Czyli zanim skorzystamy z naszej tablicy tablic, pętelka "for" i definicja każdej z podtablic:

for (int i = 0; i < numbers.Length; ++i)
{
	numbers[i] = new int[B];
}

gdzie "B", oznacza liczbę komórek w każdej podtablicy, w przypadku tablic dwuwymiarowych. Gdyby to miała być tablica trójwymiarowa, sytuacja komplikuje się jeszcze bardziej :O:

int[][][] numbers = new int[A][][];

for (int z = 0; y < numbers.Length; ++z)
{
	numbers[z] = new int[B][];
	
	for (int y = 0; y < numbers[z].Length; ++y)
	{
		numbers[z][y] = new int[C];
	}
}

Dopiero wtedy, po utworzeniu tablic i samej tablicy przechowującej swoje tablice, można programować samą obsługę :). Konieczność takiego rozbicia inicjalizacji na osobne pętle potrafi być korzystna w sytuacjach, w których nie da się ustalić z góry rozmiarów poszczególnych tablic i komórek w nich zawartych. Ponadto, tablica zagnieżdżona w języku C# może mieć nieregularne liczby elementów w każdym rzędzie! Sposoby posługiwania się tablicami nieregularnymi zostały zaprezentowane w kolejnej części opowieści o tablicach.

OBSŁUGA TABLICY ZAGNIEŻDŻONEJ

Spokojnie, ogólny kształt się nie zmienia, nadal trzymamy się zagnieżdżonych pętli, tylko teraz zamiast metody "GetLength", korzystamy z notacji indeksowej celem dostania się do podtablicy i z jej poziomu wykorzystujemy właściwość "Length" (więcej o właściwościach jest w odrębnym artykule). Mieliście okazję zobaczyć już ten zapis w powyższym przykładzie dotyczącym tablic trójwymiarowych:

numbers[i].Length

gdzie "i" oznacza indeks podtablicy. Przypominam, że skorzystanie z "Length" na samej nazwie tablicy jest interpretowane jak liczba tablic, a nie samych komórek! Dlatego jest potrzebna notacja indeksowa. A tak wyglądałby przykład na podsumowanie moich wywodów:

for (int y = 0; y < numbers.Length; ++y)
{
	int rows = numbers[y].Length;
	
	Console.Write("numbers[{0}] = ", y);
		
	for (int x = 0; x < rows ; ++x)
	{
		numbers[y][x] = rows*y + x + 1;
		
		Console.Write("{0} ", numbers[y][x]);
	}
	
	Console.WriteLine();
}
Tablica zagnieżdżona w języku C#

Tablica zagnieżdżona to de facto "tablica tablic". Różni się rozmieszczeniem wartości od tablicy wielowymiarowej ukazanej w poprzednim artykule, stąd wymaga innego zaprogramowania obsługi.


Na tym artykuł o tablicy zagnieżdżonej w języku C# dobiegł końca. Od Was zależy którą drogą pójdziecie, jeśli chodzi o wybór rodzaju tablicy wielowymiarowej. Każdy z nich ma wady i zalety, jak wszystko w informatyce. Grunt to umieć zdecydować co będzie pasować lepiej do danej sytuacji ;).

PODOBNE ARTYKUŁY