2011-06-21 12 views
6

Estoy usando ReSharper para refactorizar mi código, y una de las sugerencias de ReSharper es usar una rama respectiva en lugar de una declaración if que siempre es verdadera.¿Cuál es la rama respectiva? (sugerido por ReSharper)

Si tengo

if (myVar != null){ 
    //code 
} 

Y aplico la rama respectiva del código es como la siguiente

{ 
    //code 
} 

Es este un atajo de una sentencia if? ¿Para qué se utiliza esto? ¿Cuál es la diferencia entre los corchetes y nada?

Gracias de antemano.

Respuesta

10

Se requiere que el bloque permanezca allí, o la semántica cambiaría.

El alcance de las variables declaradas dentro del bloque de rama cambiaría cuando elimine las llaves. Potencialmente con variables conflictivas/ocultas (lambda) esto llevaría a sorpresas.

Para retirar las llaves, coloque el cursor sobre cualquiera de ellos y pulsar Alt-Intro, 'quitar los apoyos'

Reintroducir llaves: seleccione bloque de código, Ctrl-Alt-J, 7 para rodear con el bloque :)

+0

¡Estupendo! Gracias por su gran explicación, ahora puedo entender por qué los tirantes permanecen, no sabía que podía usar los tirantes solo para mantener el alcance de las variables. ¡Gracias!. – Amra

0

En ReSharper 6.0 Este comando también elimina llaves si no tiene declaraciones de variables dentro.

Cuestiones relacionadas