不同的静态实例化

时间:2013-11-11 06:29:29

标签: c# oop singleton

我无法理解

之间的区别
 private static Singleton instance;

  private static readonly Singleton instance = new Singleton();

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

任何人都可以用简单的单词

来解释

4 个答案:

答案 0 :(得分:1)

'readonly'不是必需的。但它很有帮助。它只是告诉编译器,在初始创建之后,你永远不打算将其他任何内容重新分配给实例。

这可能就是你想要的,所以你给编译器的信息越多,它就越能帮你避免任何错误。

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

请参阅Microsoft文档here

答案 1 :(得分:1)

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

当静态字段标记为readonly时,表示只能在两个位置分配值。

  1. 静态字段初始化。
  2. 静态构造函数。
  3. 另外值得一提的是readonly在“反思”中没有任何作用。您可以随时使用“反射”

    将值设置为标记为readonly的字段

答案 2 :(得分:0)

变量标记为readonly意味着只能在static initialization

期间分配变量

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

答案 3 :(得分:0)

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

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