🔥 Zapisy zamknięte, ale możesz pobrać Roadmapę .NET i dołączyć do listy oczekujących — Pobierz i dołącz do Listy VIP →

Tablice w C#: Jak wybrać element z kolekcji?

Tablice w C#: Jak wybrać element z kolekcji?

Praca z kolekcjami danych, takimi jak tablice, to codzienność każdego programisty C#. Jednym z najczęstszych zadań w pracy z kolekcjami w C# jest wybranie konkretnego elementu. Wydaje się to proste, ale kryje w sobie pułapkę, w którą wpadają początkujący – i nie tylko! Przykład: użytkownik podaje numer miesiąca, a program zwraca jego nazwę.

Czym jest indeks w tablicy?

Zanim przejdziemy do kodu, wyjaśnijmy kluczowe pojęcie. Każdy element w tablicy ma przypisany unikalny numer, który określa jego pozycję. Ten numer to indeks. Wyobraź sobie tablicę jako rząd ponumerowanych skrytek. Aby dostać się do zawartości konkretnej skrytki, musisz znać jej numer.

Kalendarz Edukacyjny

Najważniejsza zasada w C# (i wielu innych językach programowania) brzmi: indeksowanie tablic zaczyna się od zera!

  • Pierwszy element ma indeks 0.
  • Drugi element ma indeks 1.
  • Trzeci element ma indeks 2.
  • …i tak dalej, aż do ostatniego elementu, który ma indeks długość_tablicy - 1.

Zrozumienie tej zasady jest absolutnie kluczowe, aby unikać błędów.

Nieprawidlowy Numer Miesiaca

Przykład kodu w C#

Stwórzmy prostą aplikację konsolową, która prosi użytkownika o podanie numeru miesiąca (od 1 do 12), a następnie wyświetla jego nazwę.

string[] monthsOfYear =
{
    "Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec",
    "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"
};

Console.WriteLine("Podaj numer miesiąca (1-12):");

if (int.TryParse(Console.ReadLine(), out int month) && month >= 1 && month <= 12)
{
    string chosenMonth = monthsOfYear[month - 1]; // -1, bo tablica jest indeksowana od zera
    Console.WriteLine($"Wybrany miesiąc to: {chosenMonth}");
}
else
{
    Console.WriteLine("Nieprawidłowy numer miesiąca. Podaj liczbę od 1 do 12.");
}

Co tu się dzieje?

  • Deklarujemy tablicę monthsOfYear – zawiera ona wszystkie miesiące.
  • Odczytujemy dane od użytkownika przy pomocy Console.ReadLine().
    Zwracana wartość to zawsze string, więc musimy ją skonwertować.
  • Używamy int.TryParse zamiast int.Parse – to bezpieczniejsza wersja, która chroni przed błędami (np. gdy użytkownik wpisze tekst zamiast liczby).
  • Tablice w C# są indeksowane od zera, dlatego aby wybrać poprawny miesiąc, odejmujemy 1 (month - 1).
  • Dodajemy walidację zakresu – użytkownik nie może wpisać liczby mniejszej niż 1 lub większej niż 12.

Jak działa indeksowanie w tablicach?

Każdy element tablicy posiada swój indeks – numer pozycji:

  • pierwszy element ma indeks 0 (np. monthsOfYear[0] → „Styczeń”),
  • drugi element ma indeks 1 („Luty”),
  • ostatni element („Grudzień”) ma indeks 11.

To oznacza, że jeśli użytkownik poda numer 3, musimy pobrać monthsOfYear[2]. Właśnie dlatego w przykładzie występuje month - 1.

Diagram Liczb Miesiecy

Dlaczego warto znać to podejście?

  • Tablice są uporządkowane – zawsze wiemy, który element kryje się pod danym indeksem.
  • To najszybsza struktura danych w C# do przechowywania i odczytywania elementów.
  • Zrozumienie indeksowania od zera to podstawa pracy z innymi kolekcjami: listami (List<T>), słownikami (Dictionary<TKey, TValue>), kolejkami czy stosami.

Skoro potrafisz już odczytać element z tablicy, zobacz, jak edytować jej zawartość. A jeśli szukasz elastyczniejszej alternatywy dla tablicy, poznaj List<T> w C#.

Podsumowanie

  • Tablice w C# zaczynają się od indeksu 0.
  • Dostęp do elementów tablicy uzyskujemy za pomocą operatora indeksu [].
  • Zawsze warto dodać walidację danych wejściowych.
  • int.TryParse to lepszy wybór niż int.Parse, bo pozwala uniknąć wyjątków.
  • Indeksowanie jest fundamentem dla wszystkich kolekcji w .NET.
  • Próba odwołania się do indeksu spoza zakresu tablicy (np. mniejszego od 0 lub większego niż długość – 1) spowoduje błąd IndexOutOfRangeException.

Całościowe omówienie tematu kolekcji (tablica, lista, kolejka, stos, słownik). Wiele przydatnych wskazówek i dobrych praktyk dostępne jest na kursie:
Zobacz kurs — Wprowadzenie do kolekcji w C#

Kolekcje C
👨‍💻
Mariusz Jurczenko
Senior .NET Developer · 10+ lat doświadczenia komercyjnego

Programista .NET z doświadczeniem komercyjnym w firmach takich jak NFZ, Kamsoft, Diagnostyka, Hermes Reply Polska czy Etisoft Smart Solutions. Twórca kursów, z których skorzystało już ponad 11 000 osób w Strefie Kursów i ponad 1 000 kursantów na dev-hobby.pl.

Specjalizacja: Clean Code, Clean Architecture i uczenie programowania tak, żeby dało się je naprawdę zrozumieć — nie wykuć.

🚀 Co dalej?

Zobacz to w praktyce na wideo i pobierz darmową roadmapę, żeby ułożyć naukę w spójną ścieżkę do pierwszej pracy.

1 comment

Dodaj komentarz

czytanie to początek

Zamień wiedzę w umiejętności

Pobierz darmową Roadmapę .NET i ułóż takie tematy jak ten w spójną ścieżkę do pierwszej pracy.

Pobieram roadmapę →