Перепутывание области видимости в 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?

Ответы на вопрос(4)

Ваш ответ на вопрос