2012-08-17 10 views
13

Qual è il modo migliore per determinare se una variabile di riferimento oggetto è null?Come determinare se il riferimento all'oggetto è nullo?

È il seguente?

MyObject myObjVar = null; 
if (myObjVar == null) 
{ 
    // do stuff 
} 
+3

Contrariamente a cosa? –

+1

@MichaelPetrotta: è per questo che faccio la domanda? C'è un'alternativa migliore? – CJ7

+0

Se si desidera eseguire il default su qualcosa, si può sempre fare 'MyObject obj = myObjVar ?? DefaultObjVar' –

risposta

10

Sì, hai ragione, il seguente frammento è la strada da percorrere se si vuole eseguire codice arbitrario:

MyObject myObjVar; 
if (myObjVar == null) 
{ 
    // do stuff 
} 

BTW: Il codice non sarebbe compilare il modo in cui è ora, perché si accede a myObjVar prima di essere inizializzato.

+0

@DanielHilgarth, assolutamente giusto, l'ho appena testato, non dovrebbe compilare – Habib

6

Il modo in cui si sta facendo è il modo migliore

if (myObjVar == null) 
{ 
    // do stuff 
} 

ma è possibile utilizzare null-coalescing operator?? per controllare, così come assegnare qualcosa

var obj = myObjVar ?? new MyObject(); 
+4

Penso che l'operatore a coalescenza nulla sia stato introdotto in C# 2 – TheEvilPenguin

+1

@TheEvilPenguin, hai ragione, hai modificato la mia risposta – Habib

3

è possibile:

MyObject myObjVar = MethodThatMayOrMayNotReturnNull(); 
if (if (Object.ReferenceEquals(null, myObjVar)) 
{ 
    // do stuff 
} 
+2

perché la necessità di due istruzioni if? –

7

È possibile utilizzare l'oggetto. ReferenceEquals

if (Object.ReferenceEquals(null, myObjVar)) 
{ 
    ....... 
} 

Ciò restituirebbe true se myObjVar è null.

+2

Ciò è utile se si desidera sovrascrivere l'operatore == per un oggetto. – mac10688