6

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

我想了解此更改可能导致中断的常见情况。连同场景一起,如果可以的话,请提供任何细节。

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

  • 如果您在类上使用反射,则无法将字段更改为属性。即使我没有详细信息,这也很明显。序列化是一种使用反射来迭代对象并将字段更改为属性将破坏序列化程序或更改输出的场景

  • 您不能轻易地绑定字段。(这是为什么呢?我在这里读到了)

  • ???

编辑:罗伯特列出了选择属性而不是字段的原因,并解释了它们之间的切换如何导致重大变化。

4

4 回答 4

10

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

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

于 2009-05-14T13:01:14.060 回答
5

属性可以抛出任意异常,而字段则不能(至少当编译器在编译时知道字段分配时)。

于 2009-05-14T13:09:32.090 回答
2

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

于 2009-05-14T13:00:30.787 回答
1

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

于 2013-06-25T20:46:46.997 回答