Los genéricos te permiten escribir clases y métodos parametrizados por un tipo, proporcionando seguridad de tipos y reutilización sin duplicación de código ni conversiones. Las restricciones limitan qué tipos puede ser un parámetro genérico, permitiendo el uso seguro de sus miembros. Los genéricos están omnipresentes en C# (toda la biblioteca de colecciones los utiliza).
El problema que resuelven los genéricos
=> arr[i];
=> arr[i];
x = Get([] { , , }, );
