.NET现在支持数组中的尾随逗号,就像python一样

大家好今天我刚刚注意到C#3.5有一个有趣的function,它在python中很有用,也可能是其他语言。

它是数组中的尾随逗号(,)。 通常编译器会给出错误,但不需要。 并且似乎Microsoft添加了此function,现在编译器会对数组中的尾随逗号进行操作。 这是不必要的错误,现在不再被视为错误。

查看数组i和s的声明并查看尾随(逗号),它可以正确编译和运行。

static void Main(string[] args) { var intarray = new[] { 1, 2, 3, 4, 5, }; var strarray = new[] { "Hello", ",", " ", "World", }; Console.WriteLine(string.Join("", strarray)); foreach (var i in intarray) Console.WriteLine(i); } 

这对于提供信息而不是问题,但欢迎提出意见。 我正在使用VS2008。

它不仅在数组中,它通常在一个对象初始化器中:

 var foo = new Foo { Prop1 = "Value 1", Prop2 = "Value 2", }; 

也在枚举中:

 enum Foo { Val1, Val2, } 

几点:

  • 根据你的问题标题,它不是支持尾随逗号的“.NET” – 它是C#
  • 据我所知,从1.0开始,这在C#中是有效的。 C#1.0规范的第12.6节似乎至少表明了这一点。
  • 没有C#3.5这样的东西。 (有关正确的C#版本号,请参阅此问题 。)
  • Java也支持这一点,我认为 C做了,但我不完全确定。 (MS C编译器似乎支持它,至少。)

请注意,这样做的一大好处是自动生成的代码 – 执行生成的代码不需要担心它是否写出数组中的最后一个条目; 它总是可以写一个尾随的逗号。

这也意味着重新排列数组初始化程序的元素更容易,特别是如果它们在单行上:

 string[] values = { "a", "b", "c", "d", }; 

 string[] values = { "b", "a", "d", "c", }; 

只是涉及切割和粘贴线条,没有其他调整。