Encuentro el error de más arriba en mi código bastante. Siempre me sorprende que al compilador no parezca importarle esto. ¿Por qué lo anterior no es una sintaxis errror?
Debido a que las personas que diseñan la gramática sintaxis de C# eran lo suficientemente inteligente como para aprender las lecciones de otros lenguajes de programación, que no hizo permiten la coma colgando, a la irritación constante de programadores en esos idiomas. Por ejemplo, ECMAScript (JavaScript) guardó silencio sobre el problema inicialmente, y así que, naturalmente, algunas implementaciones (SpiderMonkey en Firefox, JavaScript de Opera, etc.) las permitieron, mientras que otras (JScript de Microsoft) no lo hicieron. Y esto dio lugar a una avalancha de preguntas sobre "por qué esto no funciona en IE" aquí y en otros lugares. (Afortunadamente, ECMAScript 5 los permite explícitamente, e IE8 finalmente los admite en los inicializadores de objetos: IE8 todavía trata los inicializadores de matriz de una manera no estándar, aunque para ser justos, la coma que colgaba solo se aclaró en ECMAScript 5).
Esto también se encuentra en muchos otros lugares de la gramática C#, como las enumeraciones y los inicializadores de matriz.
¿Por qué * debería * ser un error de sintaxis? No hay problema para poner un punto y coma al final de su última declaración, ¿verdad? Así que no veo nada de malo al poner una coma al final de su último inicializador. – Gabe