Possible Duplicate:
Inline property initialisation and trailing comma
Working on one of my projects (C# 4.0, Visual Studio 2010), I've accidentally discovered that code like
var obj = new { field1 = "Test", field2 = 3, }
is compiled and executed OK without any errors or even warnings and works exactly like
var obj = new { field1 = "Test", field2 = 3 }
Why does compiler tolerate the trailing coma in first example? Is this a bug in compiler or such behavior does have some purpose?
Thanks
One reason the trailing commas is good is because of Source Compares. If you update the source and use a source compare tool, then the source compare tool will only show 1 line changed (the new field3. If there was no trailing comma, then source compare will show 2 lines changed because you had to add the comma after the number 3.
To make deleting the last field easier, I suppose. There is really no ambiguity introduced in the syntax by doing this, so it just makes life a bit easier.
To determine whether or not it's a bug in the compiler, you need to look at the C# spec - in this case section 7.6.10.6, which clearly allows it:
So no, it's not a compiler bug. The language was deliberately designed to allow it.
Now as for why the language has been designed that way - I believe it's to make it easier to add and remove values when coding. For example:
can become
or
solely by adding or removing a line. This makes it simpler to maintain code, and also easier to write code generators.
Note that this is consistent with array initializers, collection initializers and enums: