在C#中,您可以通过两种看似非常相似的方式声明属性:
public string SomeProperty => "SomeValue";
VS
public string SomeProperty { get; } = "SomeValue";
这两者有区别吗? (忽略" SomeValue"不是一个非常有趣的值的事实,它可能是方法调用的结果或其他任何表示两种形式之间差异的结果)。
答案 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;}
}