Generics en C#
Los generics (genéricos) en C# permiten definir clases, métodos e interfaces que funcionan con cualquier tipo de dato de forma segura en tiempo de compilación. Ayudan a escribir código reutilizable y flexible sin sacrificar la seguridad de tipos. Son ampliamente usados en colecciones como List<T>, Dictionary<K,V> y en tus propias estructuras personalizadas.
Definir una clase genérica
Puedes declarar clases con parámetros de tipo para que funcionen con distintos tipos de datos.
public class Caja{ public T Contenido { get; set; } public void MostrarContenido() { Console.WriteLine($"Contenido: {Contenido}"); } }
Aquí, T
es un parámetro de tipo que se reemplaza cuando se crea una instancia de la clase.
Usar una clase genérica
Puedes especificar el tipo concreto al instanciarla.
var cajaDeEnteros = new Caja{ Contenido = 42 }; cajaDeEnteros.MostrarContenido(); // Contenido: 42 var cajaDeTexto = new Caja { Contenido = "Hola" }; cajaDeTexto.MostrarContenido(); // Contenido: Hola
Esto permite reutilizar la misma lógica para diferentes tipos sin duplicar código.
Generics en métodos
También puedes definir métodos genéricos para operar con tipos flexibles.
public T Identidad(T valor) { return valor; }
Llamada:
int resultado = Identidad(5); string texto = Identidad("Genérico");
Buenas Prácticas
Usa generics para evitar casting innecesario y errores en tiempo de ejecución.
Limita los parámetros de tipo con constraints si es necesario (where T : class
, etc.).
Escribe nombres de tipo significativos para mayor claridad.
Aprovecha las colecciones genéricas de .NET en lugar de las no tipadas como ArrayList.