Co to jest typ generyczny w C#?
Typ generyczny pozwala tworzyć klasy, metody i kolekcje działające na różnych typach danych, bez pisania osobnej wersji dla każdego typu. W zapisie używa się nawiasów ostrych, np. List<int> albo List<string>.
W pytaniu egzaminacyjnym zapis:
List<int> wykaz = new List<int>();
oznacza, że lista może przechowywać wyłącznie elementy typu int, czyli liczby całkowite.
Jak to działa?
W konstrukcji List<T> litera T oznacza typ ogólny. Gdy podstawimy konkretny typ, np. int, otrzymujemy listę elementów tego właśnie typu.
Przykłady:
List<int> liczby = new List<int>();
List<string> imiona = new List<string>();
List<double> pomiary = new List<double>();
Każda z tych list przechowuje inny rodzaj danych.
Dlaczego to jest ważne?
Typy generyczne dają kilka korzyści:
- zwiększają bezpieczeństwo typów,
- ułatwiają wykrywanie błędów już podczas kompilacji,
- eliminują potrzebę ręcznego rzutowania,
- pozwalają pisać bardziej uniwersalny kod.
Na przykład do List<int> nie można dodać napisu:
List<int> liczby = new List<int>();
liczby.Add(5);
// liczby.Add("tekst"); // błąd kompilacji
Najważniejsza zasada egzaminacyjna
Jeśli widzisz zapis List<int>, to elementami listy są liczby całkowite. Jeśli byłoby List<double>, wtedy byłyby to liczby rzeczywiste. O typie elementów zawsze decyduje to, co znajduje się w nawiasach ostrych.
Podsumowanie
Typ generyczny w C# określa, jakiego typu dane może przechowywać dana kolekcja lub obsługiwać metoda. W przypadku List<int> są to elementy typu int, czyli liczby całkowite.