Typ generyczny w C#

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

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.