我遇到的情况是我只想将字符串数组(类型String [])中的值附加到具有IList< String>的对象。在MSDN上的快速查找显示IList< T>的Insert方法仅具有获取索引和对象T的版本,并且没有采用IEnumerable< T>的版本。而不是T.这是否意味着我必须在输入列表上写一个循环以将值放入目标列表?如果是这样的话,那对我来说似乎是非常有限的,而且非常不友好的API设计。也许,我错过了一些东西。在这种情况下,C#专家做了什么?
答案 0 :(得分:38)
因为接口通常是使其可用所需的最少功能,以减轻实现者的负担。使用C#3.0,您可以将其添加为扩展方法:
public static void AddRange<T>(this IList<T> list, IEnumerable<T> items) {
if(list == null) throw new ArgumentNullException("list");
if(items == null) throw new ArgumentNullException("items");
foreach(T item in items) list.Add(item);
}
et voila; IList<T>
现在有AddRange
:
IList<string> list = ...
string[] arr = {"abc","def","ghi","jkl","mno"};
list.AddRange(arr);