C# 从 get 返回一个只读变量;放;

标签 c# properties readonly

我发誓我见过这样的一个例子,但是用谷歌搜索了一下却找不到。

我有一个类,它引用了一个对象,需要有一个 GET;它的方法。我的问题是我不希望任何人能够摆弄它,即我希望他们得到它的只读版本,(注意我需要能够从我的类(class)中改变它)。

谢谢

最佳答案

不,没有办法做到这一点。例如,如果您返回 List<string> (而且它不是不可变的)然后调用者能够添加条目。

正常的方法是返回一个不可变的包装器,例如 ReadOnlyCollection<T> .

对于其他可变类型,您可能需要在返回值之前克隆该值。

请注意,仅返回不可变接口(interface) View (例如返回 IEnumerable<T> 而不是 List<T> )不会阻止调用者转换回可变类型并发生变异。

编辑:请注意,除此之外,这种担忧是不可变类型使代码推理更容易的原因之一:)

关于C# 从 get 返回一个只读变量;放;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/939563/

相关文章:

ant - 是否可以将属性的值指定为 ant 中的属性?

ios - "Person"类中是否应该存在纬度/经度属性?

iphone - iPhone 上的 SQLite3 - 插入返回错误代码 8 尝试写入只读数据库

c# - 将 Excel 数据上传到 SQL Server 错误

c# - 深度嵌套动态结构的 YamlDotNet 反序列化

c# - 连接到 .NET 3.1 Azure Function 项目 Startup.cs 中的 Entity Framework Core

c# - 使用不同的兼容类型覆盖属性

c# - 线程之间通过委托(delegate)进行通信?

ruby-on-rails - Rails 4 attr_readonly 更新

vim - 设置VIM默认以 "read-only"模式打开文件?