5

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);
}
4

2 回答 2

11

创建一个新List<>IEnumerable<>

return new ReadOnlyCollection<T>(a.Concat(b).ToList());

或者我更喜欢:

return a.Concat(b).ToList().AsReadOnly();

这些基本上与您想出的功能相同,但它们在眼睛上更容易一些。

于 2014-01-02T20:02:32.220 回答
7

我相信你可以使用ReadOnlyCollectionBuilder来做到这一点。

return (new ReadOnlyCollectionBuilder<T>(a.Concat(b))).ToReadOnlyCollection();
于 2014-01-02T20:18:12.027 回答