Константы и оценка времени компиляции - Зачем изменять это поведение

Если вы перейдете примерно через 13 минут в это video Эрика Липперта, он описывает изменение, которое было внесено в компилятор C#, которое делает следующий код недействительным (по-видимому, до и включая .NET 2 этот код компилировался бы).

int y;
int x = 10;
if (x * 0 == 0)
    y = 123;

Console.Write(y);

Теперь я понимаю, что ясно, что любое выполнение приведенного выше кода на самом деле оценивается до

int y;
int x = 10;
y = 123;
Console.Write(y);

Но что я не понимаю, так это почему считается «желательным» сделать следующий код компилируемым? IE: Каковы риски, связанные с тем, чтобы позволить таким выводам идти своим чередом?

7
задан Maxim Gershkovich 24 January 2012 в 05:37
поделиться