我的一个特性是这样的:表达身体
public string Name
{
get{ return _name; }
set { _name = value; }
}
但ReSharper的劝告我将其改为:
public string Name
{
get => _name;
set => _name = value;
}
如果我重构一样,然后编译抛出错误 是在一个属性中不可能有表达式体?
我的一个特性是这样的:表达身体
public string Name
{
get{ return _name; }
set { _name = value; }
}
但ReSharper的劝告我将其改为:
public string Name
{
get => _name;
set => _name = value;
}
如果我重构一样,然后编译抛出错误 是在一个属性中不可能有表达式体?
在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;
}
如果你想ReSharper的不适应这种行为,你可以改变它:
ReSharper的>选项>代码编辑> C#>代码样式
并更改以下属性:
Code body>属性,索引器和事件从
Expression body
到Accessors with block body
如果您只是想禁用建议,请更改上述属性的通知状态。
Waht错误你得到了吗? –
C#7? https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7#more-expression-bodied-members –
显然有一个版本mismatch。此功能仅适用于c#7 – Fabiano