代码之家  ›  专栏  ›  技术社区  ›  aleemb

在什么情况下,将字段更改为属性是一个突破性的更改?

  •  5
  • aleemb  · 技术社区  · 15 年前

    读乔恩·斯基特关于 fields vs properties 他提到将字段更改为属性是一个突破性的更改。

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

    对于初学者,在其他地方提到了以下几点:

    • 如果在类上使用反射,则不能将字段更改为属性。这很明显,尽管我没有细节。序列化是一种场景,其中反射用于迭代对象,将字段更改为属性将中断序列化程序或更改输出。

    • 你不能轻易地把它绑在地上。(这是为什么?)我读过 here )

    • ????

    编辑:罗伯特有一个全面的选择理由清单 properties over fields 同时也解释了它们之间的切换如何导致断裂变化。

    4 回复  |  直到 11 年前
        1
  •  5
  •   Valentin V    15 年前

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

        2
  •  9
  •   Ruben Bartelink    15 年前

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

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

        3
  •  2
  •   GWLlosa    15 年前

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

        4
  •  1
  •   szali    11 年前

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