针对自动属性的情况

时间:2010-09-12 01:53:50

标签: c# automatic-properties

  

可能重复:
  C# 3.0 Auto-Properties - useful or not?

我的老板和我经常争论使用自动属性的好处和坏处。

public string Name { get; set; }

VS

private string name;

public string Name
{
    get { return this.name; }
    set { this.name = value; }
}

对于

我强烈支持使用它们,因为我必须编写更少的代码,当所有字段以这种方式编码时,我发现更容易理解类从长远来看,为我节省了大量时间(主要是因为我每次都写了少量代码)。

他认为他们打破了一些编程原则,因为字段应该反映对象的状态,并且通过使用属性而不是具有属性的字段来访问它,我在调试时丢失了这些信息。 (老板,如果你读到这个并且它不完全是你的意思,请随意发表评论;))

每个人对此事的看法是什么?

注意:我查看了副本,但没有谈到反对点,这就是这个问题的重点。只是人们说“我爱他们”/“我不在乎”。

3 个答案:

答案 0 :(得分:1)

你如何放弃这些信息?该属性反映了对象的状态而不是字段 - 这是一个很大的区别吗?

我想让它由字段支持的唯一一次是,如果我在设置它时需要做额外的逻辑(即:验证),或者当我想强制执行设计模式时,比如缓存值或单例等。< / p>

答案 1 :(得分:0)

也许我对Auto实现的属性的理解是有缺陷的,但是如果文档要被开发,它仍然由属性支持。自动实现的属性是仅用于编写样板代码的快捷方式。编译器在编译时扩展了Auto属性,对吧?如果您查看IL,它应该显示一个支持字段。我相信支持字段是以下划线开头的属性名称。

因此,该字段确实反映了对象的状态,并且您不必编写尽可能多的代码。该字段只是隐藏在IDE中,但如果您愿意,仍然可以使用反射访问它。

答案 2 :(得分:-1)

他的论点是错误的(所以也许你错误地引用了它)。

无论如何,没关系。你夸大了你节省了多少时间。对于大多数真实世界的应用程序,您将从自动属性开始,并最终将其更改为由真实字段支持以用于各种目的。这真是一个无用的论点。