Если вы перейдете примерно через 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: Каковы риски, связанные с тем, чтобы позволить таким выводам идти своим чередом?