c#数据类成员在声明时实例化

时间:2017-11-22 10:10:30

标签: c# class instantiation members

我正在开发一个项目,其中许多数据类看起来像这样:

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

现在将其与:

进行比较
public MyClass()
{
    this.SpecialOpeningHours = null;
}

前者是编译时第一个选项被翻译成的,第二个是你没有添加任何初始值时得到的。特别是你的第二个例子会在你调用任何成员时立即引发NullReferenceException,第一个例子将运行正常。