2010-11-03 15 views

Odpowiedz

10

Ogranicza to typową MyClass<T> do pracy tylko z instancjami T, które mają dostępny konstruktor bez parametrów. Dzięki temu można bezpiecznie użyć następującego wyrażenia w rodzaju

new T() 

Bez new przymusu nie byłoby to dozwolone, ponieważ CLR nie mógł zweryfikować typ T miał zastosowanie konstruktora.

+0

Fantastyczne. To pomaga mi bardziej, niż się spodziewałem – Dann

4

Oznacza to, że T musi mieć publiczny konstruktor bez parametrów. Na przykład (z MSDN) dodaje się utworzenie nowego obiektu T musi być możliwe:

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

Aby uzyskać więcej informacji, proszę zobaczyć new constraint w MSDN.

1

To pozwala wpisać:

T obj = new T(); 

która generuje błąd kompilatora bez klauzuli new().

Powiązane problemy