基于ReSharper将属性更改为表达式主体会导致错误?

问题描述 投票:0回答:2

我的一个属性如下所示:

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

但 ReSharper 建议我将其更改为:

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

如果我这样重构,那么编译会抛出错误 属性中不可能有表达式主体吗?

c# properties resharper expression-body
2个回答
9
投票

在 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;
}

3
投票

如果您希望 ReSharper 不适应此行为,您可以更改它:

Resharper > 选项 > 代码编辑 > C# > 代码样式

并更改以下属性:

代码正文 > 从

Expression body
Accessors with block body

的属性、索引器和事件

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

© www.soinside.com 2019 - 2024. All rights reserved.