据我所知.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相关问答推荐

创建仅包含msBuild.Target的Nuget包

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

当数据大量分布在微服务中时,我应该如何设计后端?

仅使用 .NET GetBytes 方法转换有效字节而不创建问号

AsyncLocal 的语义与逻辑调用上下文有何不同?

图像 UriSource 和数据绑定

为 XML 编码文本数据的最佳方法

为什么递归调用会导致不同堆栈深度的 StackOverflow?

.Net 中的 Int128?

C# 中的 myCustomer.GetType() 和 typeof(Customer) 有什么区别?

如何将 UI Dispatcher 传递给 ViewModel

如何让 .NET 的 Path.Combine 将正斜杠转换为反斜杠?

参数命名:文件名还是文件名?

我们应该总是在类中包含一个默认构造函数吗?

当程序员说针对接口而不是对象的代码时,他们是什么意思?

使用 C# 设置全局热键

判断 .NET 中的目录和文件写入权限

String.Join 与 StringBuilder:哪个更快?

MailMessage,Sender 和 From 属性的区别

Dictionary.Add 与 Dictionary[key]=value 的区别