我的问题可能是旧主题的一部分 - "属性与字段"。
我遇到变量在类外部是只读但需要在类内修改的情况。我可以通过两种方式处理它:
第一:
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
对于调试,第二个是最好的。否则,您必须在设置字段的每个位置放置断点。第二个在属性集上放置一个断点。
就我个人而言,我更喜欢第二个版本,因为它写得更少,所以我可以利用时间进行更复杂的编码......另外,在我看来,它促进了懒惰的发展