2011-10-19 7 views

risposta

7

aggiungere un vincolo new:

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

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

Questo dice al compilatore che T avrà sempre un costruttore senza parametri accessibili (no, non è possibile specificare qualsiasi altro tipo di costruttore).

+0

Grazie per questa risposta corretta e veloce. – Racooon

5

è necessario dichiarare il vincolo where T : new() nella dichiarazione della classe. Ciò limita lo T ai tipi con un costruttore pubblico predefinito. Per esempio:

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

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

Maggiori informazioni: http://msdn.microsoft.com/en-us/library/d5x73970.aspx

+0

Grazie, un esempio sarebbe molto utile. – Racooon

+0

@VuralAcar - Nessun problema, aggiornato con l'esempio. –

5

È necessario dire al compilatore che T implementa sempre un costruttore senza parametri.

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

"un costruttore predefinito" – BoltClock

+0

@BoltClock: un costruttore senza parametri, forse? costruttore nullary? qual è la parola migliore qui? – Jimmy