1

我无法理解两者之间的区别

 private static Singleton instance;

  private static readonly Singleton instance = new Singleton();

我为什么要readonly在这里使用 keword ???

谁能用简单的话解释一下

4

4 回答 4

1

“只读”不是必需的。但这很有帮助。它只是告诉编译器,在初始创建之后,您从不打算将其他任何东西重新分配给实例。

这可能是您想要的,因此您向编译器提供的信息越多,它就越能帮助您避免任何错误。

请注意,必须在成员声明行(就像您所做的那样)或构造函数中分配只读字段。

请参阅此处的Microsoft 文档。

于 2013-11-11T06:32:31.257 回答
1

如果你问是否需要readonly?答案是否定的。它只是确保您不会在程序的任何地方无意中更改变量的值。

当一个静态字段被标记为readonly这意味着它只能在两个地方被赋值。

  1. 静态字段初始化器。
  2. 静态构造函数。

还值得一提readonly的是在“反射”中没有任何作用。readonly您可以使用“反射”随时为标记的字段设置值

于 2013-11-11T06:37:04.353 回答
0

变量被标记为只读意味着它只能在static initialization

公共语言运行时负责变量初始化

于 2013-11-11T06:32:12.530 回答
0

采用规则:如果您不打算在代码中的类字段中放置一些值,除了构造函数(无论是静态的还是实例的),然后将其声明为readonly. 否则,声明它没有readonly关键字。

这可以帮助您避免自己的逻辑错误。

于 2013-11-11T06:33:23.283 回答