【问题标题】:Changing fields to property is a breaking change under what scenarios?在什么情况下,将字段更改为属性是一项重大更改?
【发布时间】:2010-10-26 04:17:16
【问题描述】:

在阅读 Jon Skeet 在 fields vs properties 上的文章时,他提到将字段更改为属性是一项重大更改。

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

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

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

  • 您不能轻易地绑定字段。 (这是为什么呢?我看了here

  • ???

编辑:Robert 列出了选择 properties over fields 的完整原因列表,并解释了在它们之间切换会如何导致重大变化。

【问题讨论】:

    标签: c# .net properties field


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-11-24
            • 1970-01-01
            • 2018-05-09
            • 2017-11-20
            • 1970-01-01
            • 2021-06-20
            • 2019-11-27
            • 1970-01-01
            相关资源
            最近更新 更多