Tablica to kolekcja danych o takim samym typie.
Użycie tablicy:

typ [] nazwa_tablicy = new typ [ilość_elementów];

Gdy tablica zostaje stworzona, inicjowane są też wartości domyślne dla każdego z jej elementu. Wartość domyślna zależy od typu danych. Wielkość tablicy musi być znana podczas jej inicjalizacji. Po tej operacji nie może być ona zmieniona. Podczas inicjalizacji, możemy od razu przypisać do niej elementy. W tym przypadku nie musimy podawać jej wielkości, kompilator zrobi to za nas. Zobaczmy przykład:

class Program {
        static void Main() {        
            int[] tablica = new int[10];                  
            Console.ReadLine();
        }
    } 

W tym przypadku tablica będzie mieć 10 elementów. Należy pamiętać, że indeksy elementów w tablicy zaczynają się od wartości 0.
Podajmy wartości dla elementów podczas inicjalizacji nie wpisując ilości elementów dla tabeli:

   class Program {
        static void Main() {        
            int[] tablica = new int[] { 1, 2, 3, 4, 6, 7, 8, 9 };                
            Console.ReadLine();
        }
    } 

W takim wypadku tablica będzie mieć 9 elementów. Nie możemy podczas inicjalizacji podać wartości tylko dla kilku elementów zobaczmy przykład:

  class Program {
        static void Main() {        
           int[] tablica = new int[11] { 0, 1 ,2, 3, 4, 6, 7, 8 };                
           Console.ReadLine();
        }
    } 

Tablica powinna zawierać 11 elementów. Podczas inicjalizacji próbuję jej nadać wartości tylko dla 9 elementów kompilator zgłasza błąd:

tablice

Rys. Błąd zgłoszony przez kompilator

Po dopisaniu reszty wartości dla elementów oczywiście kompilator nie zgłosi błędu i aplikacja zadziała prawidłowo.
Wartość dla elementu z tablicy możemy zapisać za pomocą nawiasu [].
Konstrukcja:

nazwaTablicy[indeks] = wartość;

Powtórzę jeszcze raz, że indeksy elementów w tablicy zaczynają się od wartości 0.
Zobaczmy przykład:

class Program {
        static void Main() {        
            int[] tablica = new int[]{1,2,3,4,5};
            Console.WriteLine("Wartość 3 elementu w tablicy wynosi: {0}", tablica[2]);
            tablica[2] = 11;
            Console.WriteLine("Wartość 3 elementu w tablicy po zmianie wynosi: {0}", tablica[2]);
            Console.ReadLine();
        }
    } 

Rezultat działania aplikacji:

tablice

Rys. Wyświetlenie wartości dla elementu w tablicy.

Do iteracji tablicy najlepiej sprawdzają się pętle for i foreach.
Zobaczmy przykład:

  class Program {
        static void Main() {
            string [] imiona = new string [4];
            imiona[0] ="Ewelina";
            imiona[1] = "Darek";
            imiona[2] = "Ania";
            imiona[3] = "Dawid";

            for (int i = 0; i < imiona.Length; i++ ) {
                Console.WriteLine(imiona[i]);
            }
            Console.ReadLine();
        }
    } 

Rezultat działania aplikacji:

tablice

Rys. Wyświetlenie zawartości tablicy typu string

W tym przykładzie aby określić warunek w pętli for użyłem właściwości Lenght. Jej zadaniem jest zwrócenie ilości elementów należących do tablicy.
Można oczywiście wyświetlić elementy w odwrotnej kolejności:

class Program {
        static void Main() {
            string [] imiona = new string [4];
            imiona[0]="Ewelina";
            imiona[1]= "Darek";
            imiona[2] = "Ania";
            imiona[3] = "Dawid";     
            for (int i = imiona.Length-1; i >= 0; i--) {
                Console.WriteLine(imiona[i]);
            }
            Console.ReadLine();
        }
    } 

Rezultat działania aplikacji:

tablice

Rys. Wyświetlenie zawartości tablicy typu string w odwrotnej kolejności

Przeróbmy ten przykład aby była w nim zastosowana pętla foreach:

  class Program {
        static void Main() {
            string [] imiona = new string [4];
            imiona[0] = "Ewelina";
            imiona[1] = "Darek";
            imiona[2] = "Ania";
            imiona[3] = "Dawid";
    
            foreach(string imie in imiona){
                Console.WriteLine(imie);
            }
            Console.ReadLine();
        }
    } 

Rezultat działania aplikacji jest identyczny. W przypadku gdy używamy pętli foreach nie jesteśmy w stanie wyświetlić elementów tablicy w odwrotnej kolejności.

Gdy spróbujemy użyć elementu o indeksie spoza granicy tablicy otrzymamy  System.IndexOutOfRangeException.

Tablice wielowymiarowe

W języku C#, możemy zadeklarować tablice wielowymiarowe. Daje to nam możliwość reprezentacji, każdej wartości elementu tablicy więcej niż przez jeden indeks.
Konstrukcja tablicy dwuwymiarowej:

Typ_danych[,] nazwa_tablicy = new Typ_danych [ilość elementów, ilość elementów];

po wpisaniu typu danych dla tablicy w nawiasie kwadratowym umieszczamy znak przecinka, symbolizuje on ilość wymiarów+1 . To oznacza jeden przecinek tablica – dwuwymiarowa, trzy przecinki – tablica czterowymiarowa. Po słowie kluczowym new i typie danych w nawiasie kwadratowym umieszczamy ilości elementów każdego z wymiaru oddzielonego przecinkiem.

Zobaczmy przykład:
Napiszmy aplikację, która w tablicy dwuwymiarowej będzie przechowywać imiona trzech par. Wypiszmy elementy tej tablicy na ekranie:

class Program {
        static void Main() {
            string[,] imiona = new string[3, 2];
            imiona[0, 0] = "Ewelina";
            imiona[0, 1] = "Darek";
            imiona[1, 0] = "Ania";
            imiona[1, 1] = "Dawid";
            imiona[2, 0] = "Krzysiek";
            imiona[2, 1] = "Ela";
            
            for (int i = 0; i < 3; i++) {
                Console.Write("Para: ");
                for (int j = 0; j < 2; j++) {
                    Console.Write(imiona[i, j] + " ");
                }
                Console.WriteLine();
            }

            Console.ReadLine();
        }
    } 

Rezultat działania aplikacji:

tablice

Rys. Wyświetlenie elementów tablicy dwuwymiarowej.

Do wyświetlenia elementów tablicy wielowymiarowej musimy użyć tyle pętli ile jest wymiarów.
Do sprawdzenia ile wymiarów ma dana tablica służy właściwość Rank.

  class Program {
        static void Main() {
            string[,] imiona = new string[3, 2];
            Console.WriteLine("Tablica o nazwie imiona posiada {0} wymiary", imiona.Rank);      
            Console.ReadLine();
        }
    }
 

Rezultat działania aplikacji:

tablice

Rys. Wyświetlenie ilości wymiarów tablicy.

Tablice wielowymiarowe mogą się przydać podczas tworzenia kolekcji grup danych ze sobą powiązanych.
Podsumowanie:
Tablica to kolekcja danych o takim samym typie. Główną wadą tej kolekcji jest mała elastyczność co do ilości elementów. Podczas inicjalizacji tablicy musimy podać ile elementów będzie przechowywać. Tej wartości nie można później zmienić. Najczęściej do wyświetlania zawartości tablicy stosuje się pętle for lub foreach