我在.NET 4.6.1 C#项目中看到过这种属性声明
public object MyObject => new object();
Run Code Online (Sandbox Code Playgroud)
我习惯于声明这样的只读属性:
public object MyObject { get; }
Run Code Online (Sandbox Code Playgroud)
我知道两者之间存在一些差异(第一个创建一个新对象),但我想要更深入的解释以及何时使用其中任何一个的一些迹象.
Jon*_*eet 15
第一个使用new-to-C#-6 表达式成员语法.它相当于:
public object MyObject
{
get { return new object(); }
}
Run Code Online (Sandbox Code Playgroud)
第二个也是 C#6的新手 - 一个自动实现的只读属性.它相当于:
private readonly object _myObject; // Except using an unspeakable name
public object MyObject
{
get { return _myObject; }
}
Run Code Online (Sandbox Code Playgroud)
您只能MyObject从声明类中的构造函数中分配,而实际上只是分配给该字段.
(这两个"换算公式"使用老派的属性声明,你总是有get,set或两者为包含代码块.)