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