【问题标题】:Properties in C# advantage [duplicate]C# 中的属性优势 [重复]
【发布时间】:2017-10-25 07:34:02
【问题描述】:

虽然我了解属性的基本概念,例如提供对私有数据成员的读、读写访问权限,但我仍然很难理解与仅将成员声明为公共的相比,它有什么用处。在什么场景下有用?如果它是一种更改私有字段值的方法,那么封装仍然如何执行?

如果可以的话,请举例说明或链接

【问题讨论】:

标签: c# properties getter-setter


【解决方案1】:

个人经验:

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

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

我的观点是它只是正确的编程语法。私有数据成员通常是那些一旦设置就不想覆盖的常量,而公共是类似代数的变量,如有必要可以被覆盖。

类似的问题已在以下位置提出: What is the difference between Public, Private, Protected, and Nothing?

干杯,

亚托

【讨论】:

  • 我不明白这是如何回答这个问题的。问题是为什么使用属性而不是字段是有利的。这个答案及其链接的答案是关于使用publicprivate 访问修饰符。它们是完全不同的概念。这个答案甚至没有提到字段或属性,只是一般的“数据成员”。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2010-11-15
    • 2017-05-04
    • 1970-01-01
    • 2014-07-20
    • 2011-07-12
    相关资源
    最近更新 更多