在哪些情况下,将字段更改为属性是一个重大变化?

ale*_*emb 5 .net c# field properties

在阅读Jon Skeet关于字段与属性的文章时,他提到将字段更改为属性是一个重大变化.

我想了解这种变化可能导致中断的常见情况.除了方案,如果可以,请提供任何详细信息.

首先,其他地方提到了以下几点:

  • 如果在类上使用反射,则无法将字段更改为属性.即使我没有细节,这也很明显.序列化是一种情况,其中反射用于迭代对象,将字段更改为属性将破坏序列化程序或更改输出

  • 您无法轻松绑定字段.(这是为什么?我在这里阅读)

  • ???

编辑:罗伯特有一个全面的列表,列出了在字段上选择属性的原因,并解释了它们之间的切换如何导致一个突破性的变化.

Rub*_*ink 9

如果您有一个公共字段而另一个程序集具有使用它的代码,则需要重新编译它.

IOW破坏的定义包括"将需要重新编译".


Val*_*yev 5

属性可以抛出任何异常,而字段则不能(至少在编译器知道编译时的字段赋值时).