【问题标题】:Why some fields are public and some have properties?为什么有些字段是公共的,有些是有属性的?
【发布时间】:2011-02-25 18:17:39
【问题描述】:

刚看了几篇教程,很困惑作者有时会同时使用没有限制的属性和公共字段。我看不出有任何理由这样做。为了符合“标准”,我不应该每次都使用它吗?

class A
{
  public bool B;

  private bool c
  public bool C
  {
    get
    {
      return c 
     }
    set
    {
      c=value;
     }

  }
}

【问题讨论】:

    标签: .net properties standards


    【解决方案1】:

    使用公共字段几乎总是是个坏主意。 Just use properties.

    您还应该注意自动实现的属性(在 C# 3 中引入),它允许您的 C 属性写为:

    public bool C { get; set; }
    

    【讨论】:

    • C# 3.0 中引入了自动属性。
    • 自动实现?什么意思,Visual Studio 会为我生成这段代码?
    • @Cocodrilo:这意味着你将源代码放在你的 C# 代码中,编译器会生成一个由私有字段支持的属性。有关详细信息,请参阅 C# 规范。
    • @Oded:谢谢 - 我希望现在使用 C# 2 或 1 的人相对较少,即使他们仍然必须以 .NET 2 为目标...
    • @JonSkeet - 您是否仍然认为在 DTO(没有任何行为且仅存储数据的对象)上使用公共字段存在问题?
    【解决方案2】:

    拥有私有字段总是更好的做法。您应该使用使代码一致的标准编码指南。

    您可以通过使用自动实现的属性完全消除私有字段的使用。

    Public int MyProperty {get; set;}
    

    你也可以对属性进行私有设置,这样它们就不能设置在类的范围之外,这就像制作一个只读属性

    Public int MyProperty {get; private set;}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-26
      • 2023-04-04
      • 2018-07-29
      • 2017-12-09
      • 2011-07-09
      • 2017-04-02
      • 2015-09-12
      • 2017-11-09
      相关资源
      最近更新 更多