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

Nis*_*mar 8 c# properties

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

Tim*_*mwi 13

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

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

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

这将完全打破程序 - 它将停止工作,只会崩溃.但是,如果不是字段,而是从一开始就拥有公共属性,那么您可以交换库.

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


jga*_*fin 2

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