Особенности компилятора C#
Недавно
Konstantin Yushtin писал о особенностях
разбора выражений компиляторами C# и C++, а сегодня я столкнулся с такой особенностью - должен ли компилироваться такой код:
string[] list = new string[] {"",}я бы сразу ответил что нет, ведь нет второго операнда в выражении инициализации.
Но!!! это компилируется под .NET 2.0 компилятор и остальные версии (пробовал для C# 3.5,3.0)
Изучив в дизасемблере код с запятой и без, пришел к выводу что запятая просто была проигнорирована. Такое поведение не зависит от типа переменных.
Сначала у меня была мысль что компилятор воспринимает запятую в качестве оператора последовательного выполнения, но подтверждения этого не получил, ни в коде IL, ни в интернете

, возможно компилятор производит оптимизацию и удаляет оператор последовательного выполнения или...
Вообщем вот такая интересная вещь, если кто-то знает ответ - поделитесь.