Kei*_*Kei 23 c# generics ilist
我处于这样一种情况,我只想将字符串数组(类型String [])中的值附加到具有IList <String>的对象.快速查看MSDN后发现,IList <T>的Insert方法只有一个版本,它带有一个索引和一个对象T,并且没有一个版本采用IEnumerable <T>而不是T.这是否意味着我必须在输入列表上写一个循环以将值放入目标列表中?如果是这样的话,那对我来说似乎是非常有限的,而且非常不友好的API设计.也许,我错过了一些东西.在这种情况下,C#专家做了什么?
Mar*_*ell 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);
}
Run Code Online (Sandbox Code Playgroud)
et voila; IList<T>现在有AddRange:
IList<string> list = ...
string[] arr = {"abc","def","ghi","jkl","mno"};
list.AddRange(arr);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6994 次 |
| 最近记录: |