ReSharper的.为什么要转换为autoproperty?

Bas*_*e33 6 c# resharper

Resharper建议我将以下代码更改为自动属性.任何人都可以解释为什么这会更好?

private List<Configuration> _configurations;
public List<Configuration> Configurations
{
    get { return _configurations; }
    set { _configurations = value; }
}
Run Code Online (Sandbox Code Playgroud)

至:

public List<Configuration> Configurations { get; set; }
Run Code Online (Sandbox Code Playgroud)

为什么可以对原始类型执行此操作,但为对象类型建议这种方式?

Gor*_*pik 15

考虑两个相同的代码片段:

private List<Configuration> _configurations;
public List<Configuration> Configurations
{
    get { return _configurations; }
    set { _configurations = value; }
}
Run Code Online (Sandbox Code Playgroud)

public List<Configuration> Configurations { get; set; }
Run Code Online (Sandbox Code Playgroud)

对于读者来说,假设她对C#有所了解,那么第二部分代码可以非常快速地阅读.第一个需要更长时间,不添加任何信息.事实上,它添加了无用的信息:我有一个属性Configurations,但我也有一个等效的字段_configurations,并且该类其余部分的代码可能使用它们中的任何一个,所以我必须考虑它们.现在假设你的类有15个这样的属性,例如.使用自动属性可以大大降低阅读代码的人的复杂性.

此外,如果你一直使用自动属性,每当你写一个非自动属性时,会立即警告读者有一些事情发生.如果您不使用自动属性,则会隐藏此有用信息.

总之,一致使用自动属性:

  • 减少代码长度
  • 减少阅读和理解课程所需的时间
  • 隐藏无用的信息
  • 使有用的信息更容易找到

有什么不喜欢的?