I generici permettono di scrivere classi e metodi parametrizzati per tipo, fornendo sicurezza di tipo e riusabilità senza duplicazione di codice o cast. I vincoli restringono quali tipi un parametro generico può essere, consentendo l'uso sicuro dei loro membri. I generici sono pervasivi in C# (l'intera libreria delle collezioni li utilizza).
Il problema che i generici risolvono
=> arr[i];
=> arr[i];
x = Get([] { , , }, );
