2010-11-03 3 views

Répondre

10

Cela contraint le MyClass<T> générique à fonctionner uniquement avec les instances T qui ont un constructeur sans paramètre disponible. Cela vous permet d'utiliser en toute sécurité l'expression suivante dans le type

new T() 

Sans la contrainte new ce ne serait pas autorisé parce que le CLR n'a pas pu vérifier le type T avait un constructeur applicable.

+0

Fantastique. Cela m'aide plus que ce à quoi je m'attendais – Dann

4

Cela signifie que T doit avoir un constructeur public sans paramètre. Par exemple (sur MSDN), la création suivante d'un nouvel objet T doit être possible:

class ItemFactory<T> where T : new() 
{ 
    public T GetNewItem() 
    { 
     return new T(); 
    } 
} 

Pour plus d'informations, s'il vous plaît voir new constraint dans MSDN.

1

Il vous permet de taper:

T obj = new T(); 

qui générerait une erreur de compilation sans la clause new().