he notado que alguien ha hecho esto en C# - Anuncio de la nueva()¿Qué logra la tipificación genérica de una nueva instancia?
public class MyClass<T> where T: new(){
//etc
}
¿Qué tiene esto lograr?
he notado que alguien ha hecho esto en C# - Anuncio de la nueva()¿Qué logra la tipificación genérica de una nueva instancia?
public class MyClass<T> where T: new(){
//etc
}
¿Qué tiene esto lograr?
Esto restringe el genérico MyClass<T>
para que solo funcione con las instancias T
que tienen un constructor sin parámetros disponible. Esto le permite utilizar con seguridad la siguiente expresión dentro del tipo
new T()
Sin la limitación new
esto no estaría permitido porque el CLR no pudo verificar el tipo T
tenía una constructora aplicable.
Significa que T debe tener un constructor público sin parámetros. Por ejemplo (de MSDN), la siguiente creación de un nuevo objeto T debe ser posible:
class ItemFactory<T> where T : new()
{
public T GetNewItem()
{
return new T();
}
}
Para obtener más información, por favor ver new constraint en MSDN.
Se le permite escribir:
T obj = new T();
lo que generaría un error del compilador sin la cláusula new()
.
Fantástico. Eso me ayuda más de lo que esperaba – Dann