据我所知.NET4.0仍然缺少只读列表.为什么框架仍然缺少这种功能?这不是domain-driven design人最常见的功能之一吗?

One of the few advantages Java has over C# is this in the form of the Collections.unmodifiablelist(list) method, which it seems is long overdue in IList<T> or List<T>.

使用IEnumerable<T>是问题的最简单解决方案,可以使用ToList并返回一份副本.

推荐答案

您要找的是ReadOnlyCollection,从.NET2开始就有了.

IList<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = new ReadOnlyCollection<string>(foo);

List<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = foo.AsReadOnly();

这将创建一个只读的view,它反映对包装的集合所做的更改.

.net相关问答推荐

删除数据库项目中的表

dotnet 8 web api在部署到docker后无法工作

如何使用 awslocal 通过 localstack 中的 cloudwatch events/eventbridge 触发 lambda

.NET - WindowStyle = hidden 与 CreateNoWindow = true?

在 C# 中将字符串转换为 colored颜色

.Include() 与 .Load() 在 EntityFramework 中的性能

为什么 C# 不允许像 C++ 这样的非成员函数

Int32.ToString() 是特定于文化的吗?

如何将字符串列表数据绑定到 WPF/WP7 中的 ListBox?

File.ReadAllLines() 和 File.ReadAllText() 有什么区别?

简单委托(委托)与多播委托

将双精度转换为带有 N 个小数的字符串,点作为小数分隔符,并且没有千位分隔符

DBNull 的意义何在?

我不了解应用程序域

有没有办法从方法返回匿名类型?

您可以使用 Xamarin 开发 Linux 应用程序吗?

在 C# 中,为什么不能将 List 对象存储在 List 变量中

为什么 Roslyn 中有异步状态机类(而不是 struct )?

嵌套的 Try/Catch 块是个坏主意吗?

将 SignalR 2.0 .NET 客户端重新连接到服务器集线器的最佳实践