Перепутывание области видимости в C #
У меня есть два примера кода. Первый не компилируется, а второй -.
Code Sample 1 (does not compile)
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
}
Я понимаю, почему компилятор сообщает об ошибке вPoint1
, Но я не понимаю, почему он сообщает об ошибке вPoint2
, И если вы говорите, что это из-за организации внутри MSIL, то почему компилируется второй пример кода?
Code sample 2 (compiles)
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();
}
}
Если в примере кода 2 применяются простые правила переменной области действия, то почему эти же правила не применяются в примере кода 1?