Confusión de alcance variable en C #
Tengo dos ejemplos de código. El primero no compila, pero el segundo lo hace.
Ejemplo de código 1 (no compila)
public void MyMethod(){
int i=10;
for(int x=10; x<10; x++) {
int i=10; // Point1: compiler reports error
var objX = new MyOtherClass();
}
var objX = new OtherClassOfMine(); // Point2: compiler reports error
}
Entiendo por qué el compilador informa un error enPoint1
. Pero no entiendo por qué informa un error enPoint2
. Y si dice que se debe a la organización dentro de MSIL, ¿por qué se compila el segundo ejemplo de código?
Ejemplo de código 2 (compila)
public void MyMethod(){
for(int x=10; x<10; x++) {
int i=10;
var objX = new MyOtherClass();
}
for(int x=10; x<10; x++) {
int i=10;
var objX = new MyOtherClass();
}
}
Si las reglas simples de alcance variable se aplican en el Ejemplo de código 2, ¿por qué esas mismas reglas no se aplican al Ejemplo de código 1?