T在课堂上?AddRange ICollection?

Dej*_*n.S 7 .net c# icollection

我尝试做静态类,添加到icollection但我遇到了一些我似乎无法克服的问题.这就是我如何得到所以我可以在方法中传递ICollection?因为T就是说它无法解决.

然后我想知道有没有办法在icollection上做AddRange?

我在考虑这样的事情,但maby我已经不在乎了吗?

public static ICollection<T> add(this IEnumerable<T> list)
    {
        ICollection<T> collection = null;

        return collection.AddRange(list);            
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 16

不,ICollection<T>没有AddRange方法 - 即使它确实如此,你也会尝试取消引用null哪种方法NullReferenceException.您尚未指定要将列表添加到的集合...您到底想要做什么?

你可以创建(比方说)一个新的List<T>- 并且它的好处是已经有了一个构造函数可以采取IEnumerable<T>:

public static ICollection<T> Add<T>(this IEnumerable<T> list)
{
    return new List<T>(list);            
}
Run Code Online (Sandbox Code Playgroud)

但是,那时你真的只是重新实现Enumerable.ToList()并给它一个不同的返回类型......

如果要将所有内容添加到现有集合中,您可能需要以下内容:

public static ICollection<T> AddTo<T>(this IEnumerable<T> list,
                                      ICollection<T> collection)
{
    foreach (T item in list)
    {
        collection.Add(item);
    }
    return collection;
}
Run Code Online (Sandbox Code Playgroud)