C# Language Vincoli di tipo (nuova parola chiave)


Esempio

Utilizzando il new() vincolo new() , è possibile applicare i parametri del tipo per definire un costruttore vuoto (predefinito).

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 seconda chiamata a Create() restituirà l'errore di compilazione con il seguente messaggio:

'Bar' deve essere un tipo non astratto con un costruttore pubblico senza parametri per utilizzarlo come parametro 'T' nel tipo generico o nel metodo 'Factory'

Non esiste alcun vincolo per un costruttore con parametri, sono supportati solo costruttori senza parametri.