Переменная объема оператора в итерациях while и do-while? - PullRequest
0 голосов
/ 01 мая 2019

Мне интересно узнать об итерационных конструкциях в C # (но я думаю, это также относится к C ++ и Java).

class Program {
    static void Main (string[] args) {

        // With 'for' i is in statement scope only
        for (int i = 0; i <= 3;) { Console.WriteLine(i++); }
        Console.WriteLine ("Control variable i is not accessible\n");

        // No statement scope for 'while'
        int j = 0;
        while (j <= 3) { Console.WriteLine (j++); }
        Console.WriteLine ($"Control variable after loop: {j}\n");  // Possible

        // No statement scope for 'do-while'
        int k = 0;
        do { Console.WriteLine (k++); } while (k <= 3);
        Console.WriteLine ($"Control variable after loop: {k}\n"); // Possible
    }
}

В итерации for переменная i доступна ввстроенный оператор, в управляющей части оператора, но не вне оператора for.Следовательно, это область действия самого утверждения.

Однако, кажется, невозможно иметь такую ​​область видимости с while и do-while итерациями.Управляющая переменная не может быть объявлена ​​/ инициализирована в управляющей части операторов.Если он объявлен во встроенном операторе, он не виден в управляющей части (код не может быть скомпилирован), а если он объявлен вне всего оператора, он виден за пределами оператора, никоим образом не сопоставимый с управляющей переменной forКонструкция итерации.

Вышесказанное действительно логично, однако я хотел бы знать:

  • , если есть способ объявить переменную в while и do-while который будет виден во встроенном операторе, в управляющей части, но не снаружи оператора, как int i оператора for.

  • , если нет, естьочевидная причина, по которой дизайнеры этого не допустили?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...