C# Language Restricciones de tipo (nueva palabra clave)


Ejemplo

Al usar la restricción new() , es posible imponer parámetros de tipo para definir un constructor vacío (predeterminado).

class Foo
{
    public Foo () { }
}

class Bar
{
    public Bar (string s) { ... }
}

class Factory<T>
    where T : new()
{
    public T Create()
    {
        return new T();
    }
}

Foo f = new Factory<Foo>().Create(); // Valid.
Bar b = new Factory<Bar>().Create(); // Invalid, Bar does not define a default/empty constructor.

La segunda llamada a to Create() dará un error de tiempo de compilación con el siguiente mensaje:

'Barra' debe ser un tipo no abstracto con un constructor público sin parámetros para usarlo como parámetro 'T' en el tipo o método genérico 'Fábrica'

No hay ninguna restricción para un constructor con parámetros, solo se admiten constructores sin parámetros.