在 C# 中使用访问器的优点和缺点是什么

发布于 2024-10-25 17:05:48 字数 290 浏览 4 评论 0原文

可能的重复:
公共变量与带有访问器的私有变量

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

Possible Duplicate:
public variables vs private variables with accessors

I am currently building a small application to manage an XML file. Each entry is represented in the code by an instance of a custom class. Now to set and get the properties, I can either allow direct access to them, or use accessors. Which one would be better, and why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

老旧海报 2024-11-01 17:05:48

使用或不使用访问器没有优缺点:您必须使用它们。

这只是一个 OOP 原则:封装对类字段或计算值的访问,这样它们的使用者就不会关心如何检索或分配某个值。

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

There're no pros and cons of using accessors or not: you must use them.

It's just an OOP principle: encapsulate the access to the class fields or calculated values so consumers of them won't care about how some value is retrieved or assigned.

Why? Because of encapsulation. It's one of most important principles of OOP, since this ensures the way a value is retrieved and assigned in a single point.

心房敞 2024-11-01 17:05:48

优点:

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

属性:

  1. 需要输入更多代码(但实际上自动实现的属性并不多)

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

Pros:

  1. Encapsulation - can change implementation later on without recompiling everything that uses the DLL
  2. Can be put into interfaces (that cannot have fields)
  3. Can be overridden (made virtual)
  4. Many serializers will only serialize properties, not fields
  5. WPF binding only works on properties

Cons:

  1. More code to type (but really not much more with auto-implemented properties)

In general, I'd always use them on any significant class. At least I'll be using auto properties.

只有一腔孤勇 2024-11-01 17:05:48

在这种特定场景中,访问器的明显优点是您可以限制仅对那些对您的 XML 架构有效的属性和子级进行访问(假设架构存在,应该如此,因为您控制着 XML)。这将由 setter 实现,但 getter 也将帮助您减少一点输入。

In this specific scenario, the obvious advantage of accessors is that you can limit access to only those properties and children that are valid for your XML schema (assuming that a schema exists, which should be so because you are in control of the XML). This will be implemented by the setters, but the getters will also help you reduce typing a bit.

黑凤梨 2024-11-01 17:05:48

访问器让您将来可以更改底层的工作方式...也许您更改 XML 架构或完全放弃 XML...您可以修改访问器实现,以便调用您的类的任何代码都可以保持原样。

使用访问器的唯一好处是您需要维护的代码行数更少。

一定要使用访问器在类之间共享内容。

Accessors let you in the future change how things work under the hood... maybe you change the XML schema or ditch XML altogether... you could modify the accessor implementation so that any code calling your class can remain as-is.

The only benefit of not using accessors is that you then have a few less lines of code to maintain.

Definitely use accessors for sharing things between classes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文