对于与readonly
关键字的正确方法。
答案 0 :(得分:4)
我会说official proposal准确地描述了正确的方法。
但我要提一个一般性的评论,这是readonly
的{{1}}关键字,实际上并没有对现有代码进行功能上的更改(当标记为struct
的方法试图更改时,编译器警告除外) readonly
状态)。这种新语法实际上是编译器的一种指示符,它可以通过不生成值类型的额外副本来更好地优化代码。它与struct
关键字没有什么共同之处,因为const
仅适用于基本类型的常量(例如const
或int
)(请参见https://exceptionnotfound.net/const-vs-static-vs-readonly-in-c-sharp-applications/和
Static readonly vs const上的问题。
答案 1 :(得分:1)
自C#开始以来就存在只读。
Const用于声明一个常量值,该常量值由编译器解释为不是实例化变量的原始值。它不能是实例,它是不可变的值。
https://docs.microsoft.com/dotnet/csharp/language-reference/keywords/const
Readonly用于声明无法重新分配的实例。这是一个不能更改的实例变量。
https://docs.microsoft.com/dotnet/csharp/language-reference/keywords/readonly
例如,您可以编写:
const string MyString = "A string";
const int MyInteger = 10;
但是你不能写:
const Form Instance = new Form();
您必须使用:
readonly Form Instance = new Form();
可以在构造函数中分配只读成员。