Se produjo un problema en otro foro y supe cómo solucionarlo, pero reveló una característica del compilador peculiar para mí. La persona obtenía el error "La declaración incrustada no puede ser una declaración o una declaración etiquetada" porque tenían una declaración de una variable que seguía una instrucción if sin corchetes. Esa no era su intención, pero habían comentado la línea de código que sigue inmediatamente a la declaración if, que hacía que la declaración de la variable fuera la línea de código de facto que debía ejecutarse. De todos modos, ese es el fondo, lo que me lleva a esto.Declaraciones de variables después de sentencias if
El siguiente código es ilegal
if (true)
int i = 7;
Sin embargo, si envuelves que entre paréntesis, es todo legal.
if (true)
{
int i = 7;
}
Ninguna parte del código es útil. Sin embargo, el segundo está bien. ¿Cuál es específicamente la explicación de este comportamiento?
Estoy de acuerdo, no tiene sentido en absoluto para declarar una variable de tal manera. Sin embargo, la declaración variable completamente inútil en el segundo ejemplo está bien. Ninguno de los dos tiene valor. ¿Es simplemente una cuestión de poner entre paréntesis, nada más? (Por cierto, puedo vivir con eso) –
Sí. Sus intenciones son absolutamente claras para el compilador cuando incluye los corchetes, por lo que lo permitirá. El compilador de C# no lo permitirá sin corchetes, ya que no está claro que su intención real sea declarar una variable inútil. –
Pero el segundo bien podría ser de valor, si, por ejemplo, el valor se recupera de un método que tiene efectos secundarios. –