为什么在C#中使用私有字段的公共属性?

时间:2010-08-27 05:09:35

标签: c# properties

如果我将一个类成员设为私有,然后我想访问该成员,我们必须为该成员定义一个公共属性。但后来我想知道:如果我们可以通过声明公共财产来公开使用该类成员,那么为什么我们不将这个类成员本身定义为公共属性呢?

5 个答案:

答案 0 :(得分:13)

出于二进制兼容性的原因,Microsoft建议使用公共属性代替公共字段。如果您正在编写一个库(其他程序将访问它),这只是一个问题。

基本上,想象一下这种情况:

  • 您使用公共字段
  • 创建了一个库
  • 其他人编写了一个使用您的库并访问该公共字段的程序
  • 现在您要将字段更改为公共属性,因为您需要验证输入值,或者属性已成为计算的结果,或者您希望它抛出异常,因为它是过时的,或其他什么。
  • 用户尝试升级您的库,但不会升级使用该库的程序。

这将彻底打破程序 - 它将停止工作并且只会崩溃。但是,如果您从一开始就拥有公共财产,那么您可以交换库。

这当然只与图书馆有关。在所有其他情况下,建议并不真正相关,如果您愿意,可以使用字段。如果您以后发现您需要一个属性,您仍然可以将其更改为属性,然后您的程序仍然可以正常编译。

答案 1 :(得分:2)

因为您可以验证属性中的指定值。

答案 2 :(得分:0)

属性访问器(get,set方法)允许您在将来更改您的实现。例如,您可以从支持字段(私有类成员)开始,但稍后该属性可能会成为某些计算的结果。此外,属性语法允许您拥有只读成员 - 因此您只能在类中更改值,外部世界只能读取它。

答案 3 :(得分:0)

以下是我们使用公共属性而不是公共字段的原因。

  1. 您可以编写更复杂的代码 获取/设置方法,而只有 字段中的单个值。
  2. 属性使您的代码更多 “OO”。说一个名为Person的类,我们 很容易猜到有一个 其中称为“名称”的属性。但是一个 名为“Name”的公共字段确实如此 怪异。
  3. 某些属性适用于属性 仅(AttributeTargets.Property)。

答案 4 :(得分:0)

使用属性的原因非常简单。您可以随时更改代码处理获取/设置其值而不会破坏任何外部程序,具体取决于您的工作 - 这不适用于字段。此外,属性可以标记为虚拟,因此可以通过子类重新定义 - 同样不会破坏任何兼容性。