对象初始化器逗号查询

时间:2012-07-11 11:59:35

标签: c#

注意到我的C#代码中存在一个小错误(第4行结束):

Domain.Models.Patient patient = new Domain.Models.Patient
{
   PatientId = patientId,
   StudyID = studyId,
};

如果在studyId末尾有错误的逗号,我不会收到任何构建错误或运行时错误。

为什么会这样,这真的很重要吗?

3 个答案:

答案 0 :(得分:2)

没关系,也不会导致任何编译时错误。它对其他人也是如此,就像枚举一样。可能表明,其他项目可能会添加到对象中。

    enum Test
    {
        Value1,
        Value2,
        //Value3, May be to comment out easily
    }

找到Reference - C# Language Specification

  

(第24.2节)与标准C ++一样,C#允许在结尾处使用尾随逗号   阵列初始化。此语法提供添加或的灵活性   从这样的列表中删除成员,并简化机器生成   这些清单。

并且

  

(第21.1节) - C#允许在枚举体中使用尾随逗号,就像它允许一个   数组初始值设定项

答案 1 :(得分:0)

编译器会忽略最后一个逗号。

Domain.Models.Patient patient = new Domain.Models.Patient
{
   PatientId = patientId,
   StudyID = studyId, // this comma is ignored by compiler.
};

答案 2 :(得分:0)

当您在初始化程序中复制/粘贴,重新排列,注释/注释时,这非常方便。如果您必须在进程中添加或删除逗号,则无需担心。