我无法理解两者之间的区别
private static Singleton instance;
和
private static readonly Singleton instance = new Singleton();
我为什么要readonly
在这里使用 keword ???
谁能用简单的话解释一下
“只读”不是必需的。但这很有帮助。它只是告诉编译器,在初始创建之后,您从不打算将其他任何东西重新分配给实例。
这可能是您想要的,因此您向编译器提供的信息越多,它就越能帮助您避免任何错误。
请注意,必须在成员声明行(就像您所做的那样)或构造函数中分配只读字段。
请参阅此处的Microsoft 文档。
如果你问是否需要readonly
?答案是否定的。它只是确保您不会在程序的任何地方无意中更改变量的值。
当一个静态字段被标记为readonly
这意味着它只能在两个地方被赋值。
还值得一提readonly
的是在“反射”中没有任何作用。readonly
您可以使用“反射”随时为标记的字段设置值
变量被标记为只读意味着它只能在static initialization
公共语言运行时负责变量初始化
采用规则:如果您不打算在代码中的类字段中放置一些值,除了构造函数(无论是静态的还是实例的),然后将其声明为readonly
. 否则,声明它没有readonly
关键字。
这可以帮助您避免自己的逻辑错误。