愚蠢的问题,但为什么下面的行可以编译?
int[] i = new int[] {1,};
如您所见,我没有输入第二个元素并在那里留了一个逗号。仍然可以编译,即使您不希望它编译。</p>
最佳答案
我想是因为 ECMA 334 标准说:
array-initializer:
{ variable-initializer-list(opt) }
{ variable-initializer-list , }
variable-initializer-list:
variable-initializer
variable-initializer-list , variable-initializer
variable-initializer:
expression
array-initializer
如您所见,尾随逗号是允许的:
{ variable-initializer-list , }
↑
附言一个好的答案(即使这个事实已经被许多用户指出)。 :)
尾随逗号可用于简化自动代码生成器的实现(生成器可以避免测试初始化程序中的最后一个元素,因为它应该在没有尾随逗号的情况下编写)和使用预处理器指令的条件数组初始化。
关于c# - 为什么这个 c# 片段是合法的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2361265/