C# 只读getter与类属性函数

C# 只读getter与类属性函数,c#,c#-6.0,C#,C# 6.0,C#6带来了一些新特性,包括和 我想知道这两个属性之间有什么区别?有什么理由让我喜欢其中一个而不是另一个吗 public class Foo { public string Bar {get;} = "Bar"; public string Bar2 => "Bar2"; } 我知道{get;}=只能通过静态调用或常量值进行设置,=>可以使用实例成员。但是在我的特殊情况下,我应该选择哪一个,为什么呢?最容易用C#1表示: 如您所见,第一个包含字段,第二个不包含字段。因此,

C#6带来了一些新特性,包括和

我想知道这两个属性之间有什么区别?有什么理由让我喜欢其中一个而不是另一个吗

public class Foo
{
    public string Bar {get;} = "Bar";
    public string Bar2 => "Bar2";
}

我知道
{get;}=
只能通过
静态
调用或常量值进行设置,
=>
可以使用实例成员。但是在我的特殊情况下,我应该选择哪一个,为什么呢?

最容易用C#1表示:

如您所见,第一个包含字段,第二个不包含字段。因此,您通常会将第一个用于每个对象可能具有不同状态的对象,例如,在构造函数中设置,但第二个用于在所有此类对象中保持不变的对象,因此不需要任何每个对象状态(当然,也不需要将其委托给其他成员)


基本上,问问自己,如果没有可用的C#6,您将编写上述哪段代码,并选择相应的C#6路径。

您关于“我知道{get;}=只能通过静态调用设置”的说法是错误的。这样声明的属性只能在构造函数中设置,或者通过初始值设定项设置。哦,没错。我还没有指出设置只读自动属性的方法会导致相同的结果。非常感谢。
public class Foo
{
    private readonly string bar = "Bar";
    public string Bar { get { return bar; } }

    public string Bar2 { get { return "Bar2"; } }
}