2012-03-07 18 views
12

Come si crea una classe nullable (?) In C#? Come:Creazione di una classe nullable

public class Hello1 { 
    public int Property1 { get; set; } 
} 

public class Hello2 { 
Public Hello1? Property2 { get; set; } //Hello1 should work when it has "?" 
} 

Voglio rendere Hello1 classe per prendere il modulo "Hello1?" se necessario.

+1

Questo è un duplicato di http://stackoverflow.com/questions/3132667/nullable-class – evasilchenko

risposta

31

Non è necessario creare un tipo annullabile per i tipi di riferimento. Sono già annullabili. Hai solo bisogno di farlo per i tipi di valore come int, bool, decimale, ecc ...

+0

Ok, stavo confondendo KeyValuePair con una classe. Era una struttura quindi richiedeva "?". Stavo cercando di creare la stessa cosa. Ha senso. – iefpw

8

Non è necessario; i tipi di riferimento possono già essere null. Per quanto riguarda le strutture, è sufficiente aggiungere un ?al. Quindi basta rimuovere il ? e verificare null utilizzando == null, come al solito.

0

Hello1 è già annullabile. Non hai bisogno del ? sulla tua proprietà.

Edit - Ho il sospetto che si stia tentando di impostare Hello1.Property1 a null, e si sta sperando che facendo Hello1 nullable lo permette. Non lo farà. È necessario contrassegnare Property1 come annullabile se lo si sta facendo.

1

Tutte le classi sono annullabili. nullable è per i tipi di valore che non possono essere nulli

0

Hello1 è già un tipo di riferimento, quindi può essere già null.
La sintassi nullable "classname?" può essere applicato solo a ValueTypes, ad esempio int, DateTime, float ecc., che di solito non può essere null.

2

Basta rimuovere il punto di domanda. Tutte le classi sono annullabili per impostazione predefinita. Solo oggetti di tipo valore (come struct) devono essere resi esplicitamente nullable.

Problemi correlati