Pregunta

Dupe: Diferencia nula

Hace una vida encontré un artículo que explicaba que los siguientes no eran iguales (en c #):

if (o == null) {}
if (null == o) {}

El artículo explicaba que se prefería este último porque daba como resultado una prueba más precisa. He estado codificando así desde entonces. Ahora que entiendo mucho más, estaba buscando el artículo, u otro similar, para ver cuáles eran los hallazgos exactos, pero no puedo encontrar nada sobre el tema.

¿Pensamientos? ¿Hay una diferencia? La primera mirada diría que no. Pero quién sabe qué sucede en las entrañas de la compilación de IL y C #.

¿Fue útil?

Solución

es un viejo hábito evitar que escribas if (o = null) . if (null = o) es un error de sintaxis. tipo de sin sentido en C #, porque los valores nulos nunca se convierten en valores booleanos.

Otros consejos

Este último es un remanente de los días C / C ++, donde fue posible asignar accidentalmente un valor en lugar de comparar. C # no le permitirá hacer esto, así que cualquiera de los dos es aceptable (pero creo que el primero es más legible).

En c # no hay diferencia. Es un viejo hábito de los desarrolladores de C / C ++ evitar un error común cuando esta es la sintaxis correcta:

if(o = null)

En C # eso no se compilaría, pero en C y C ++ lo haría, dejándote con un error bastante desagradable. Por lo tanto, muchas personas se acostumbraron a hacer

if(null == o)

Irrelevante para C #, esto es de C. Consulte esta pregunta para una discusión .

Trabajo con Java ... y tengo la costumbre de tener constantes en el LHS para todas las comparaciones conmutativas.

"name".equals(name)

 null == obj

"55".compareTo(numString)

etc. Solo evitando las NullPointerExceptions innecesarias ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top