2011-10-19 17 views

Odpowiedz

7

Dodaj new ograniczenia:

class Request<T> where T : new() { 
    private T sw; 

    public void Request() { 
     sw = new T(); 
    } 
} 

ten informuje kompilator, że T zawsze będą mieli dostępną konstruktora bez parametrów (nie, nie można podać dowolny inny rodzaj konstruktora).

+0

Dziękuję za tę prawidłową i szybką odpowiedź. – Racooon

5

Musisz zadeklarować ograniczenie where T : new() w deklaracji klasy. Ogranicza to T do typów z publicznym domyślnym konstruktorem. Na przykład:

class Request<T> where T : new() 
{ 
    private T sw; 

    public Request() 
    { 
     sw = new T(); 
    } 
} 

Więcej informacji: http://msdn.microsoft.com/en-us/library/d5x73970.aspx

+0

Dziękuję, przykład byłby bardzo pomocny. – Racooon

+0

@VuralAcar - Nie ma problemu, zaktualizowano przykład. –

5

Musisz poinformować kompilator, że T implementuje zawsze konstruktora bez parametrów.

class Request<T> where T : new() 
+0

"domyślny konstruktor" – BoltClock

+0

@BoltClock: może konstruktor bez parametrów? konstruktor nullary? jakie jest najlepsze słowo? – Jimmy

Powiązane problemy