c# data class 成员在声明时实例化

c# data class members are instantiated at declaration

我正在做一个项目,其中很多数据 类 如下所示:

[DataMember]
public List<SpecialOpeningHours> SpecialOpeningHours { get; set; } = new List<SpecialOpeningHours>();

我以前从未见过这个,通常会这样做:

[DataMember]
public List<SpecialOpeningHours> SpecialOpeningHours { get; set; }

任何人都可以解释为什么以这种方式实例化列表以及是否有一些优势?在使用上似乎没有任何区别。我正在使用 Dapper 并得到相同的结果填充列表。

您的第一个示例只是为此在 C#6 中引入的快捷方式:

public MyClass()
{
    this.SpecialOpeningHours = new List<SpecialOpeningHours>();
}

现在将其与以下内容进行比较:

public MyClass()
{
    this.SpecialOpeningHours = null;
}

前者是你第一个选项在编译时翻译成的,第二个是你不添加任何初始值时得到的。特别是您的第二个示例将在您调用其任何成员时立即导致 NullReferenceException,而第一个示例将 运行 正常。