¿Cuáles son los beneficios específicos de los genéricos de C#? ¿Dónde se puede reflejar?
Acerca del tipo de objeto:
1. El tipo de objeto puede referirse a cualquier tipo de instancia
2. ;
p>
3. Puede definir parámetros de tipo de objeto;
4. Puede utilizar el objeto como tipo de retorno.
Pero hay grandes problemas al hacer esto
1. Causará errores porque el programador no recuerda el tipo utilizado, lo que resultará en incompatibilidad de tipos;
2. La mutualización de tipos de valor y tipos de referencia, es decir, boxing y unboxing, degrada el rendimiento del sistema.
Los genéricos propuestos por C# 2.0 tienen como objetivo evitar la conversión de tipos forzada, reducir el boxing y unboxing, mejorar el rendimiento y reducir los errores.
El espacio de nombres System.Collections.Generic proporciona versiones genéricas de muchas clases e interfaces de colección.
Definición:
clase pública GenericListlt;
{
public void Add(T input)//T está configurado en Parámetros de tipo
public T Add()//T se establece como valor de retorno
}
lt; Tgt; es un parámetro de tipo, que sirve como función de marcador de posición, reemplazada por el tipo real en el momento de la compilación.
Usar genéricos:
GenericListlt; list1 = new GenericListlt ();
stringgt; );
nombre de clase gt; lista3 = nuevo nombre de clase gt ();
nombre de clase lt; name lt; intgt; gt ();
Tomando list1 como ejemplo, el compilador genera el siguiente método:
public void Add(int input)
public int Add()
Clase genérica con múltiples parámetros de tipo:
clase pública nombre de clase T, Ugt;
Restricciones genéricas:
Asegúrese de que los parámetros utilizados por la clase genérica sean del tipo que proporciona el método específico.
clase pública GenericListlt; Tgt; donde T: IEmployee
Si la interfaz IEmployee contiene el método A, el compilador verificará que el tipo utilizado para reemplazar T debe implementar la interfaz IEmployee.
Métodos genéricos: permitir el método utilizado al definir clases genéricas
//Definir métodos genéricos
static void Swaplt; rhs)
{ T temp; temp = lhs; lhs = rhs = temp }
//Usar métodos genéricos
public static void TestSwap( ){ int a=1, b=3;
Intercambiar; intgt; (ref a, ref b);
cadena s1="Hola", s2 ="mundo";
Swaplt; stringgt; (ref s1, ref s2);}
Hay clases genéricas, interfaces genéricas, métodos genéricos y delegados genéricos p>