Я нахожу вышеописанную опечатку в своем коде довольно часто.Я всегда удивляюсь, что компилятор, кажется, не заботится об этом.Почему вышеприведенное не является ошибкой синтаксиса?
Поскольку люди, разрабатывающие синтаксическую грамматику C #, были достаточно умны, чтобы выучить уроки из других языков программирования, которые не допускали зависаниезапятая, к постоянному раздражению программистов на этих языках.
Например, ECMAScript (JavaScript) изначально молчал по этому вопросу, и поэтому, естественно, некоторые реализации (SpiderMonkey в Firefox, JavaScript в Opera и т. д.) позволяли имв то время как другие (Microsoft JScript) этого не сделали.И поэтому это привело к потоку вопросов «почему это не работает в IE» здесь и в других местах.(К счастью, ECMAScript 5 явно разрешает их, и IE8, наконец, поддерживает их в инициализаторах объектов - IE8 по-прежнему обрабатывает инициализаторы массива нестандартным способом, хотя, если честно, висящая запятая для них была также разъяснена только в ECMAScript 5)
Это встречается и во многих других местах грамматики C #, например, перечисления и инициализаторы массива.