在C#中使用访问器有什么优点和缺点?

可能重复:
公共variables与私人variables与访问者

我目前正在构build一个小应用程序来pipe理一个XML文件。 每个条目在代码中由自定义类的实例表示。 现在设置和获取属性,我可以允许直接访问它们,或者使用访问器。 哪一个会更好,为什么?

优点:

  1. 封装 – 可以稍后更改实现,而无需重新编译使用该DLL的所有内容
  2. 可以放入界面(不能有字段)
  3. 可以被覆盖(虚拟)
  4. 许多序列化器只会序列化属性,而不是字段
  5. WPF绑定仅适用于属性

缺点:

  1. 更多的代码键入(但实际上不多与自动实现的属性)

总的来说,我总是把它们用在任何重要的课堂上。 至少我会使用自动属性。

没有使用访问器的优点和缺点:你必须使用它们。

这只是一个OOP原则:封装对类字段或计算值的访问权限,因此它们的消费者不会关心如何检索或分配某个值。

为什么? 由于封装。 这是OOP的最重要的原则之一,因为这确保了一个价值检索和分配在一个单一的点的方式。

在这种特定情况下,访问者的明显优势是可以将访问权限限制为只对XML模式有效的那些属性和子级(假定模式存在,这应该是因为您控制了XML)。 这将由制定者执行,但获得者也将帮助你减少键入一些。

访问者可以让你在将来改变事情的底层工作方式……也许你可以改变XML模式或者把XML一起改变……你可以修改访问器实现,以便调用你的类的任何代码都可以保持原样。

使用访问器的唯一好处是你有几行代码来维护。

绝对使用访问器来分享类之间的东西。