空得到表达的身体语法?

时间:2017-06-26 09:41:08

标签: c#

是否可以编写此属性:

string Error { get; }

in expression bodied syntax(=>),

例如:

 string Title
  { 
    get
      {
        return title;
      }
  }

变为:

string Title => title;

2 个答案:

答案 0 :(得分:12)

不,因为:

string Error { get; }

...是一个自动实现的属性。编译器在后台为您生成一个字段,但您无法在代码中引用该字段。如果您需要使用支持字段,则需要自己声明:

private readonly string error;
string Error => error;

这基本上就是编译器为你生成的 - 所以如果你想要它,那就自己写吧。虽然这很有用,但是,IMO。

如果您已经拥有该字段,您可以像上面那样编写属性,也可以将字段转换为属性,因此请使用您所在的属性以前是在使用该领域。

(如果你想要一个只读的属性,但是有一个可变字段支持的属性更可行 - 如果你想要一个真正的只读属性,它就不能自动实现。它可能是一个公共可读和私人可写的自动实现的属性。)

答案 1 :(得分:0)

是的,你可以在C# 6.0。但是您仍然需要自己声明支持字段:

string error;
string Error => error;