Tablice, listy, kolekcje oraz funkcje i metody – solidne fundamenty czystego kodu w C#

Wstęp

Jeśli zaczynasz swoją przygodę z programowaniem w C#, zrozumienie podstawowych struktur danych oraz umiejętność organizowania kodu w funkcje i metody jest kluczowe. W tym artykule pokażę Ci, czym różnią się tablice, listy i kolekcje, a także wytłumaczę, jak tworzyć funkcje i metody, które pomogą Ci pisać czysty, czytelny i łatwy do rozbudowy kod.

1. Tablice, listy i kolekcje – jak przechowywać dane?

W programowaniu bardzo często musimy przechowywać więcej niż jedną wartość. Zamiast tworzyć wiele zmiennych, możemy używać struktur danych takich jak tablice, listy czy kolekcje. Przyjrzyjmy się każdej z nich.

Tablice (Array)

Tablica to uporządkowany zbiór elementów o tym samym typie. Liczba elementów w tablicy jest ustalana przy jej tworzeniu i nie może się później zmienić.

				
					int[] liczby = new int[3];
liczby[0] = 10;
liczby[1] = 20;
liczby[2] = 30;
				
			

Można też od razu przypisać wartości:

				
					int[] liczby = new int[] { 10, 20, 30 };
				
			

Zalety: szybki dostęp do elementów po indeksie.

Wady: stała długość – nie można dodać ani usunąć elementów po stworzeniu tablicy.

Listy (List<T>)

Listy są bardziej elastyczne niż tablice. Możemy dowolnie dodawać i usuwać elementy.

				
					List<string> imiona = new List<string>();
imiona.Add("Ania");
imiona.Add("Bartek");
				
			

Możemy też zainicjalizować listę z gotowymi wartościami:

				
					List<string> imiona = new List<string> { "Ania", "Bartek" };
				
			

Zalety: dynamiczna długość, wiele przydatnych metod (np. Add, Remove, Contains).

Wady: nieco wolniejsze niż tablice przy bardzo dużych ilościach danych.

Uwaga: List<T> to przykład typu generycznego. Litera T oznacza typ elementów, które lista ma przechowywać – np. List<int> dla liczb lub List<string> dla tekstów. Dzięki temu kolekcje są bardziej uniwersalne i bezpieczne typowo.

Inne kolekcje

C# oferuje również bardziej zaawansowane struktury:

  • Dictionary<TKey, TValue> – słownik pozwalający przechowywać pary klucz-wartość.

				
					Dictionary<string, int> wiek = new Dictionary<string, int>();
wiek["Ania"] = 25;
wiek["Bartek"] = 30;
				
			
  • HashSet<T> – zbiór unikalnych elementów.

  • Queue<T> – kolejka (FIFO – pierwszy wszedł, pierwszy wyszedł).

  • Stack<T> – stos (LIFO – ostatni wszedł, pierwszy wyszedł).

2. Funkcje i metody – jak organizować kod?

Program, który składa się z jednego długiego bloku kodu, jest trudny do zrozumienia i modyfikacji. Dlatego kod dzielimy na mniejsze fragmenty – funkcje (lub metody).

Co to jest metoda?

Metoda (funkcja w klasie) to fragment kodu, który wykonuje konkretne zadanie. Dzięki niej możemy uniknąć powtarzania tego samego kodu i sprawić, że nasz program będzie bardziej uporządkowany.

Różnica między funkcją a metodą: w języku C# funkcje są zawsze częścią klasy, dlatego zazwyczaj mówimy o metodach. W innych językach (np. Pythonie) funkcje mogą istnieć samodzielnie, ale w C# wszystko jest częścią klasy.

				
					int Dodaj(int a, int b)
{
    return a + b;
}
				
			

Aby wywołać metodę:

				
					int wynik = Dodaj(5, 3); // wynik = 8
				
			

Dobre praktyki

  • Nazywaj metody jasno i zrozumiale – np. PoliczSume, WyswietlUzytkownikow.

  • Jedna metoda = jedno zadanie – nie łącz wielu operacji w jednej funkcji.

  • Unikaj powtarzania kodu – jeśli robisz coś więcej niż raz, zrób z tego metodę.

  • Ogranicz liczbę parametrów – im mniej, tym lepiej.

Przykład refaktoryzacji

Kod bez metod:

				
					List<string> uzytkownicy = new List<string> { "Ania", "Bartek" };
foreach (var u in uzytkownicy)
{
    Console.WriteLine(u);
}
				
			

Kod z metodą:

				
					void WyswietlUzytkownikow(List<string> lista)
{
    foreach (var u in lista)
    {
        Console.WriteLine(u);
    }
}

// wywołanie
List<string> uzytkownicy = new List<string> { "Ania", "Bartek" };
WyswietlUzytkownikow(uzytkownicy);
				
			

3. Jak to połączyć w praktyce?

Wyobraź sobie, że tworzysz prostą aplikację do obsługi zamówień. Możesz przechowywać je w liście, a operacje takie jak dodanie zamówienia, wyświetlenie listy czy usunięcie – wydzielić do osobnych metod:

				
					List<string> zamowienia = new List<string>();

void DodajZamowienie(string produkt)
{
    zamowienia.Add(produkt);
}

void WyswietlZamowienia()
{
    foreach (var z in zamowienia)
    {
        Console.WriteLine(z);
    }
}
				
			

Ćwiczenia dla Ciebie

  1. Stwórz tablicę 5 liczb całkowitych i wypisz je w konsoli.

  2. Zapisz imiona 3 osób w liście, a następnie dodaj jeszcze dwa imiona.

  3. Napisz metodę ObliczPoleKwadratu, która przyjmuje długość boku i zwraca pole.

  4. Utwórz słownik, który będzie przechowywał imię i wiek kilku osób, a potem wypisz ich dane.

Podsumowanie

  • Tablice są szybkie, ale mają stałą długość.

  • Listy są elastyczne i łatwiejsze w użyciu.

  • Kolekcje takie jak Dictionary czy Queue dają dodatkowe możliwości.

  • Funkcje i metody pozwalają dzielić kod na logiczne fragmenty, co zwiększa jego czytelność i ułatwia utrzymanie.

Nawet proste programy warto pisać z myślą o przejrzystości. Dzięki temu łatwiej będzie Ci je rozwijać, testować i udoskonalać.

Co dalej?

Jeśli dobrze opanowałeś tablice, listy, kolekcje oraz metody, kolejnym krokiem będzie poznanie klas i obiektów oraz podstaw programowania obiektowego (OOP). To pozwoli Ci tworzyć bardziej rozbudowane i profesjonalne aplikacje.

Warto też dowiedzieć się, czym są przestrzenie nazw (namespace) oraz jak organizować kod w osobnych plikach i folderach. Porządek w projekcie to coś, co docenisz przy każdym większym projekcie!

Udostępnij:

Powiązane posty

Devkot

Miejsce dla prawdziwych kotów programowania

Dołącz do newslettera

Dołacz do naszej watachy i bądź na bieżąco. 

Zapisując się na newsletter zgadzasz się na przetwarzanie Twoich danych osobowych w celu wysyłania na wskazany przez Ciebie adres e-mail informacji handlowych o nowościach, promocjach, produktach i usługach związanych z serwisem devkot.pl. Będzie to marketing bezpośredni, do realizacji którego wykorzystamy Twoje telekomunikacyjne urządzenia końcowe. Administratorem Twoich danych osobowych będzie Maciej Kotlarz prowadzący jednoosobową działalność gospodarczą, z siedzibą w Sosnówka (58-564) przy ul. Karkonoskiej 10, NIP: 6112808621. Przysługuje Tobie prawo do cofnięcia zgody, żądania wglądu do Twoich danych, wniesienia sprzeciwu co do ich przetwarzania, sprostowania, usunięcia i ograniczenia przetwarzania.