¿Qué son los Objetos Genéricos en C#?

febrero 15, 2025

Generic es una potente técnica de programación en C#.NET que permite escribir código reutilizable para diferentes tipos de datos sin necesidad de reescribir la lógica para cada tipo. Funciona utilizando parámetros de tipo, representados por letras mayúsculas entre corchetes angulares <>, como List<T>, Dictionary<TKey, TValue>. Donde T, TKey y TValue son parámetros de tipo que representan el tipo de dato concreto que se utilizará al instanciar el objeto.

Una de las aplicaciones más comunes de Generic es en la creación de colecciones como List<T>. Antes de Generic, para crear una lista de objetos Student, se debía usar ArrayList y realizar conversiones de tipo (casting) cada vez que se extraía un elemento. Esto conllevaba el riesgo de errores en tiempo de ejecución si la conversión era incorrecta.

#
// Sin genéricos
ArrayList students = new ArrayList();
students.Add(new Student());
students.Add(new Car()); // No se detecta el error en tiempo de compilación

Student first = (Student)students[0]; // Requiere conversión de tipo, posible error en tiempo de ejecución

Con Generic, List<T> resuelve este problema permitiendo solo agregar objetos del tipo T a la lista. El compilador detectará el error en tiempo de compilación si se intenta agregar un objeto de un tipo incorrecto.

#
// Usando genéricos
List<Student> students = new List<Student>();
students.Add(new Student()); 
students.Add(new Car()); // Error en tiempo de compilación

Student first = students[0]; // No requiere conversión de tipo

El uso de Generic ofrece múltiples beneficios:

  • Reutilización de código: Se escribe una sola vez para varios tipos de datos. Por ejemplo, la clase List<T> se puede usar para List<int>, List<string>, List<Student>, etc.
  • Seguridad de tipos: El compilador verifica los tipos de datos en tiempo de compilación, reduciendo los errores en tiempo de ejecución.
  • Rendimiento: Evita el boxing/unboxing al trabajar con tipos de valor, mejorando el rendimiento del programa.
  • Legibilidad y mantenimiento: El código es más claro, comprensible y fácil de mantener.

Generic no solo se utiliza en colecciones, sino también en la definición de métodos (Métodos Genéricos) y clases (Clases Genéricas). Por ejemplo, un método Swap<T> puede intercambiar el valor de dos variables de cualquier tipo de dato.

#
public static void Swap<T>(ref T a, ref T b)
{
    T temp = a;
    a = b;
    b = temp;
}


int x = 10;
int y = 20;
Swap<int>(ref x, ref y); // Intercambia dos enteros

string str1 = "Hello";
string str2 = "World";
Swap<string>(ref str1, ref str2); // Intercambia dos cadenas

En resumen, Generic es una característica crucial en C#.NET que permite escribir código flexible, seguro y eficiente. Es la base de muchas otras tecnologías como LINQ y juega un papel fundamental en el desarrollo de aplicaciones modernas. Comprender qué son los objetos genéricos y cómo utilizarlos ayudará a los desarrolladores a mejorar la calidad del código y optimizar el rendimiento de las aplicaciones.

Leave A Comment

Categorías

Recent Posts

Create your account