哪一个最好是使用私有二传手或私有字段和属性只是getter自动实现的属性

  • 本文关键字:属性 getter 实现 哪一个 二传手 字段 c#
  • 更新时间 :
  • 英文 :


我的问题可能是旧主题的一部分 - "属性与字段"。

我遇到变量在类外部是只读但需要在类内修改的情况。我可以通过两种方式处理它:

第一:

private Type m_Field;
public Type MyProperty { get { return m_Field; } }

第二:

public Type MyProperty { get; private set; }

在阅读了几篇文章(主要介绍了使用公共属性而不是公共字段的好处)之后,我不知道第二种方法是否比第一种方法有一些优势,但编写的代码更少。我感兴趣的是哪一个在项目中使用(以及为什么)会更好,或者这只是个人选择。

也许这个问题不属于SO,所以我提前道歉。

第二个版本产生的混乱较少,但不太灵活。我建议你使用第二个版本,直到你遇到需要第一个版本的情况,然后重构 - 无论如何,更改将是类的本地,所以不要太担心!

通常,编写较少的代码是个好主意。你写的代码越少,你产生的错误就越少:)

第二个版本更短,所以我认为它通常更好。例外情况是,当唯一的写入访问发生在构造函数中时。然后我更喜欢第一个版本,因为这允许将该字段标记为readonly

无论如何,第二个几乎可以编译到第一个,所以IMO总是使用第二个,因为它的代码更少更整洁。

我倾向于使用第一种方法的唯一情况是当我想延迟加载属性时,例如

private List<string> _items;
...
public List<string> Items
{
    get
    {
        if (_items == null)
        {
            _items = new List<string>();
            // load items
        }
        return _items;
    }
}

请回答以下问题。好像一样,

https://softwareengineering.stackexchange.com/questions/72495/net-properties-use-private-set-or-readonly-property

对于调试,第二个是最好的。否则,您必须在设置字段的每个位置放置断点。第二个在属性集上放置一个断点。

就我个人而言,我更喜欢第二个版本,因为它写得更少,所以我可以利用时间进行更复杂的编码......另外,在我看来,它促进了懒惰的发展

最新更新