C# 中的属性优势

Properties in C# advantage

虽然我了解属性的基本概念,例如提供对私有数据成员的读取、读写访问,但我仍然很难理解将成员声明为 public 有何用处.在什么场景下有用?如果它是一种改变私有字段值的方法,那么封装是如何被强制执行的?

请举例说明或link如果可以

我认为属性与字段、私有与私有(与内部)存在一些混淆

字段非常类似于 class 的普通变量。它们可以是 public 或私人的。 属性,就像字段一样,也可以是 public 或私有的。然而,虽然它们的行为看起来类似于一个字段,但它们实际上更像是具有特定签名的函数(签名是 setter 采用 属性 类型的单个参数,并且 getter 不带参数并返回该类型)。因为它们的行为就像一个函数,无论何时设置或检索 属性 的值,您都可以 运行 任意代码来实现该行为(即缓存值,如果缓存为空,则从某处检索值).

根据个人经验:

当您不希望通过另一个调用包含 Private 的 class 的 class 从外部访问它时,您通常会拥有 Private 数据成员数据成员.

Public 数据成员是那些您可以通过其他 classes 访问以获取其内容的数据成员。

我的看法是它只是正确的编程语法。私有数据成员通常是那些一旦设置就不想覆盖的常量,而 Public 是类似代数的变量,必要时会被覆盖。

类似的问题已被问到: What is the difference between Public, Private, Protected, and Nothing?

干杯,

亚托