2017-06-20 29 views
1

我的一个特性是这样的:表达身体

public string Name 
{ 
get{ return _name; } 
set { _name = value; } 
} 

但ReSharper的劝告我将其改为:

public string Name 
{ 
get => _name; 
set => _name = value; 
} 

如果我重构一样,然后编译抛出错误 是在一个属性中不可能有表达式体?

+0

Waht错误你得到了吗? –

+0

C#7? https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7#more-expression-bodied-members –

+0

显然有一个版本mismatch。此功能仅适用于c#7 – Fabiano

回答

2

在c#6之前,你不能在属性中使用表达式体,而必须写这样的东西。

public string FullName 
{ 
    get { return string.Format("{0} {1}", FirstName, LastName); } 
} 

在c#6中,您可以创建只读扩展主体。

public string FullName => $"{FirstName} {LastName}"; 

在c#7中,您获得了像您展示的成员的表达式主体。

public string Name 
{ 
    get => _name; 
    set => _name = value; 
} 
0

如果你想ReSharper的不适应这种行为,你可以改变它:

ReSharper的>选项>代码编辑> C#>代码样式

并更改以下属性:

Code body>属性,索引器和事件从Expression bodyAccessors with block body

如果您只是想禁用建议,请更改上述属性的通知状态。