c# - 再锐化。为什么要转换为汽车属性(property)?

标签 c# resharper

Resharper 建议我将以下代码更改为自动属性。谁能解释为什么这样会更好?

private List<Configuration> _configurations;
public List<Configuration> Configurations
{
    get { return _configurations; }
    set { _configurations = value; }
}

收件人:

public List<Configuration> Configurations { get; set; }

为什么可以对基本类型执行此操作,但建议对对象类型执行此操作?

最佳答案

考虑两段等效的代码:

private List<Configuration> _configurations;
public List<Configuration> Configurations
{
    get { return _configurations; }
    set { _configurations = value; }
}

public List<Configuration> Configurations { get; set; }

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

此外,如果您一直使用自动属性,那么每当您编写非自动属性时,读者都会立即收到警告,其中有一些事情正在发生。如果您不使用自动属性,这些有用的信息将被隐藏。

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

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

有什么不喜欢的?

关于c# - 再锐化。为什么要转换为汽车属性(property)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988043/

相关文章:

ReSharper - 有没有办法将代码质量建议保存到文件中?

visual-studio - Resharper 和 ViEmu 键绑定(bind)(和 Visual Assist)

c# - 将数组从 c++ 传递到 c#,然后按值或按引用返回,哪个更好,为什么?

c# - 将 REST 响应转换为 XDocument 时出现问题

C# FMOD 从流中播放

c# - Resharper(查找并)一次修复所有问题

resharper - 不包装长参数列表的可能理由是什么? (StyleCop SA1115)

c# - Devexpress ASPxDateEdit 控件 OnDateChanged 事件未触发

c# - 使用 linq 时返回匿名类型结果

resharper - 在您的vs.net项目中,重新共享会生成哪种特定的重新共享文件?