你只是放弃并返回可写的集合吗?您是否返回只读集合,然后将它们包装在可写的多样性中? AHHHHH.
更新:
谢谢我熟悉框架设计指南,这就是为什么团队使用Fxcop来强制执行它.然而,这个团队和VS 2005一起生活(我知道,我知道)并告诉他们LINQ / Extension方法可以解决他们的问题只会让他们感到难过.
他们已经了解到List.FindAll()和.FindFirst()比编写foreach循环更清晰.现在我正在推动他们使用ReadOnlyCollections,他们失去了清晰度.
也许有一个更深层次的设计问题,我没有发现.
– 抱歉,原帖应该提到了VS2005的限制.我和我共处了很长时间以至于我没有注意到.
解决方法
DO use
ReadOnlyCollection<T>
,a subclass ofReadOnlyCollection<T>
,or in rare casesIEnumerable<T>
for properties or return values representing read-only collections.
我们使用ReadOnlyCollections来表达我们返回的集合的意图.
列表< T>为方便起见,在.NET 2.0中添加了您所说的方法.在C#3.0 / .NET 3.5中,您可以在ReadOnlyCollection< T>上获得所有这些方法. (或任何IEnumerable< T>)使用扩展方法(并使用LINQ运算符),所以我认为没有任何动机将它们本地添加到其他类型.它们在List上存在的事实只是一个历史记录,因为现在可以使用扩展方法,但不是2.0.
原文地址:https://www.jb51.cc/csharp/97453.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。