为什么我会选择私有只读自动属性而不是只读字段?

问题描述

一个 article about changes in C# 6.0 at Microsoft 表示只读的自动属性和声明(我自己强调):

支持自动属性初始化器的一个有趣结果是它消除了在早期版本中发现的许多需要显式字段声明的情况。 (...) 另一方面,声明只读字段的需要实际上已被弃用。现在,无论何时声明只读字段,如果需要该级别的封装,您可以将只读自动属性声明为私有

我到底为什么要这样做?

我完全理解公开属性而不是字段的好处,因为即使在我需要在更高版本中添加一些验证代码或类似代码的情况下,这也保持了二进制兼容性。但是,总是对私有只读字段拥有私有只读属性有什么好处?

请注意,我不是在询问私有只读属性比私有只读字段更有优势的特定场景。引用的文章暗示只要可以使用私有只读字段,就应该选择私有只读属性。这是否有任何切实的好处,或者这只是作者对新功能过度的热情?

解决方法

我替换了完整的上下文。这句话在Primary Contructors一章中。对于主构造函数,用 Auto-Property Initializers 替换只读支持字段是有意义的。

我同意,这句话很奇怪:

现在,无论何时声明只读字段,如果需要该级别的封装,您都可以将只读自动属性声明为私有的。

当我阅读本文时,我看到了两个公理:

  1. 对于主构造函数,您应该使用自动属性初始化程序而不是只读支持字段。
  2. 嘿,伙计,可能使用自动初始化程序声明属性私有

我认为作者更喜欢简洁而不是可读性,或者作者提倡到最后。

但是最终的 C#6 或下一个版本中没有集成主构造函数,所以我们仍然需要很长时间的支持字段。