Вдохновленный этим question, я начал задаваться вопросом, почему следующие примеры являются незаконными в С#:
VoidFunction t = delegate { int i = 0; };
int i = 1;
и
{
int i = 0;
}
int i = 1;
Мне просто интересно, знает ли кто то, почему именно язык был спроектирован таким образом? Разве это препятствует плохой практике программирования, и если да, почему бы просто не выпустить предупреждение?, по соображениям производительности (компиляция и при запуске) или в чем причина?