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

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

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

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

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

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

  • ???

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

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

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

IOW破坏的定义包括“将需要重新编译”。

至少在Windows窗体中,您只能将DataGridViewColumns等内容数据绑定到业务对象的属性,而不是字段。 因此,如果您的类被用作网格的DataSource,则其属性更改为字段将导致网格所有者出现一些新错误。

您可以将字段作为refout参数传递,或者在不安全的上下文中使用其地址,而不能使用属性执行这些操作。