Estoy trabajando en una pequeña biblioteca de clases en el trabajo, y naturalmente implica el uso de genéricos para esta tarea. Pero hay algo que realmente no entiendo con los genéricos: ¿Por qué necesitaría usar parámetros genéricos de tipo y luego restringir el parámetro tipo a una clase base o interfaz específica?¿Cuál es el punto de tener restricciones para los parámetros de tipo en .NET (clase base y restricciones de interfaz)
He aquí un ejemplo de lo que quiero decir:
public class MyGenericClass<T> where T : SomeBaseClass
{
private T data;
}
y aquí está la aplicación sin genéricos
public class MyClass
{
private SomeBaseClass data;
}
¿Son estas dos definiciones del mismo (si es así, entonces no veo la advatage de usar genéricos aquí)?
Si no es así, ¿qué nos beneficiamos del uso de los genéricos aquí?
Ya veo. Pero en lo que se refiere a la clase genérica, no hay diferencia real ... ¡De acuerdo, lo entiendo! –
@AviShilon: en su mayor parte, no. La única diferencia entre las restricciones de tipo genérico y el tipado estático normal es que una restricción de tipo genérico puede especificar las palabras clave 'class' y' struct' para restringir a cualquier referencia o tipo de valor, respectivamente. Eso no se puede expresar en la sintaxis de tipeo estático normal. También puede hacer algo como 'typeof (T)' para obtener el tipo * specific * sin recurrir a 'GetType()' (que podría ser más derivado que 'T' o no funcionaría en absoluto si el valor es' null '). –