将成员变量声明为只读有什么好处?它只是防止有人在类的生命周期内更改其值,还是使用此关键字会导致速度或效率提高?
最佳答案
我认为使用只读字段不会带来任何性能提升。这只是一个检查,以确保一旦对象完全构建,该字段就不能指向新值。
然而,“只读”与其他类型的只读语义有很大不同,因为它是由 CLR 在运行时强制执行的。 readonly 关键字编译为可由 CLR 验证的 .initonly。
这个关键字的真正优点是生成不可变的数据结构。根据定义,不可变数据结构一旦构造就不能更改。这使得在运行时推断结构的行为变得非常容易。例如,不存在将不可变结构传递给代码的另一个随机部分的危险。他们永远无法更改它,因此您可以针对该结构可靠地进行编程。
罗伯特·皮克林 (Robert Pickering) 写了一篇关于不变性好处的精彩博文。帖子可见here或在 archive.org backup .
关于c# - 在 C# 中将字段标记为 `readonly` 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/277010/