Generici vam omogućuju pisanje klasa i metoda parametrizirane tipom, pružajući sigurnost tipova i ponovnu upotrebljivost bez dupliciranja koda ili kastanja. Ograničenja ograničavaju koje tipove generički parametar može biti, omogućujući sigurnu upotrebu njihovih članova. Generici su sveprisutni u C#-u (čitava biblioteka kolekcija koristi ih).
Problem koji generici rješavaju
=> arr[i];
=> arr[i];
x = Get([] { , , }, );
