在声明属性时,".>"在.Net C#中做了什么?

Kar*_*sen 8 .net c#

我在.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或两者为包含代码块.)

  • @MeirionHughes:嗯,在这种情况下,这个问题专门询问自动实现的只读属性和表达式身体成员属性之间的区别.副本不会问这个问题.我可以看到它. (3认同)
  • 令人遗憾的是,SO的得分最高的成员并没有跳到"它的重复"选项. (2认同)