2012-08-17 20 views
13

¿Cuál es la mejor forma de determinar si una variable de referencia de objeto es null?¿Cómo se determina si la referencia del objeto es nula?

¿Es el siguiente?

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

¿A diferencia de qué? –

+1

@MichaelPetrotta: ¿por eso hago la pregunta? ¿Hay alguna mejor alternativa? – CJ7

+0

Si quiere usar algo de manera predeterminada, siempre puede hacer 'MyObject obj = myObjVar ?? DefaultObjVar' –

Respuesta

10

Sí, tiene usted razón, el siguiente fragmento es el camino a seguir si se desea ejecutar código de su elección:

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

Por cierto: El código no se compilará la forma en que es ahora, porque se accede al myObjVar antes de que se inicialice.

+0

@DanielHilgarth, Absolutamente correcto, acabo de probarlo, no debería compilar – Habib

6

La forma en que está haciendo es la mejor manera

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

pero se puede utilizar null-coalescing operator?? para comprobar, así como asignar algo

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

Creo que el operador nulo-coalescente se introdujo en C# 2 – TheEvilPenguin

+1

@TheEvilPenguin, tiene razón, modifiqué mi respuesta – Habib

3

puede:

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

¿por qué la necesidad de dos declaraciones if? –

7

Puede usar Object. ReferenceEquals

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

Esto devolvería verdadero, si el myObjVar es nulo.

+2

Esto es útil si desea anular el operador == para un objeto. – mac10688

Cuestiones relacionadas