【发布时间】:2014-01-02 20:00:16
【问题描述】:
ReadOnlyCollection 构造函数要求您为其提供 IList。 但是,如果您有一些 ROC 想要连接并生成一个新的 ROC,Concat 方法将返回 IEnumerable。这不是传递给 ROC 构造函数的有效参数。
那么如何创建一个 ROC 作为其他 ROC 的串联?
到目前为止,这是我能想到的最好的:
ReadOnlyCollection<T> ROCConcat<T> ( ReadOnlyCollection<T> a, ReadOnlyCollection<T> b)
{
List<T> tmp = new List<T>();
foreach (T f in a.Concat(b))
tmp.Add(f);
return new ReadOnlyCollection<T>(tmp);
}
【问题讨论】:
-
请注意,当您这样做时,您会破坏 ROC 与其底层
IList之间的链接,因此如果修改了IList(在列表中添加或删除了一个项目,我不是在说关于正在修改的列表中的项目)a和b将显示修改,但您的新连接集合仍将显示原始IList连接在一起。
标签: c# concat readonly-collection