c# - 在 C# 中将字段标记为 `readonly` 有什么好处?

标签 c# readonly processing-efficiency memory-efficient

将成员变量声明为只读有什么好处?它只是防止有人在类的生命周期内更改其值,还是使用此关键字会导致速度或效率提高?

最佳答案

我认为使用只读字段不会带来任何性能提升。这只是一个检查,以确保一旦对象完全构建,该字段就不能指向新值。

然而,“只读”与其他类型的只读语义有很大不同,因为它是由 CLR 在运行时强制执行的。 readonly 关键字编译为可由 CLR 验证的 .initonly。

这个关键字的真正优点是生成不可变的数据结构。根据定义,不可变数据结构一旦构造就不能更改。这使得在运行时推断结构的行为变得非常容易。例如,不存在将不可变结构传递给代码的另一个随机部分的危险。他们永远无法更改它,因此您可以针对该结构可靠地进行编程。

罗伯特·皮克林 (Robert Pickering) 写了一篇关于不变性好处的精彩博文。帖子可见here或在 archive.org backup .

关于c# - 在 C# 中将字段标记为 `readonly` 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/277010/

相关文章:

c# - 使用循环转换此 linq 表达式

c# - 是否可以返回调用者无法修改的只读 ObservableCollection?

ios - 如何在 Swift 中从一组图像高效地创建多行照片拼贴

javascript - 使用 ASP.NET MVC 管理窗口的通用解决方案

c# - 在本地测试 Facebook 评论插件

c# - .NET Core 中 Microsoft Fakes 的任何替代方案?

javascript - 如何将选择元素设置为只读 ('disabled' 不会在服务器上传递选择值)

ubuntu - 在 Linux Snappy Ubuntu Core 上更改密码

postgresql - 在带有 Postgres 的 Elixir 中,我怎样才能让数据库返回未使用的枚举值?

r - 如何从向量中删除大于向量中先前值的值