SomeValue {get;} = true之间的差异; vs SomeValue =>真正;在属性中

时间:2016-08-31 22:43:46

标签: c# c#-6.0

在C#中,您可以通过两种看似非常相似的方式声明属性:

public string SomeProperty => "SomeValue";

VS

public string SomeProperty { get; } = "SomeValue";

这两者有区别吗? (忽略" SomeValue"不是一个非常有趣的值的事实,它可能是方法调用的结果或其他任何表示两种形式之间差异的结果)。

1 个答案:

答案 0 :(得分:8)

在您的示例中,没有功能差异,因为您始终返回一个常量值。但是,如果值可能会改变,例如

public string SomeProperty => DateTime.Now.ToString();

VS

public string SomeProperty { get; } = DateTime.Now.ToString();

每次调用属性时,第一个都会执行表达式。每次访问属性时,第二个都会返回相同的值,因为在初始化时设置了值

在前C#6语法中,每个语法的等效代码为

public string SomeProperty
{
    get { return DateTime.Now.ToString();}
}

VS

private string _SomeProperty = DateTime.Now.ToString();
public string SomeProperty 
{ 
    get {return _SomeProperty;} 
}