Generyki pozwalają pisać klasy i metody sparametryzowane typem, zapewniając bezpieczeństwo typów i ponowną użyteczność bez duplikacji kodu ani castowania. Ograniczenia ograniczają, jakie typy parametr generyczny może być, umożliwiając bezpieczne używanie ich członków. Generyki są wszechobecne w C# (cała biblioteka kolekcji ich używa).
Problem, który rozwiązują generyki
=> arr[i];
=> arr[i];
x = Get([] { , , }, );
