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);
}
从IEnumerable<>
创建一个新List<>
:
return new ReadOnlyCollection<T>(a.Concat(b).ToList());
或者我更喜欢:
return a.Concat(b).ToList().AsReadOnly();
这些基本上与你想出的相同,但它们对眼睛来说更容易一些。
我相信你可以使用ReadOnlyCollectionBuilder来做到这一点。
return (new ReadOnlyCollectionBuilder<T>(a.Concat(b))).ToReadOnlyCollection();