generic ejemplo clase c# generics ilist

ejemplo - list object c#



¿Por qué IList<T> no tiene métodos de inserción que tomen IEnumerable<T>? (1)

Estoy en una situación en la que solo quiero agregar valores en una matriz de cadenas (tipo String []) a un objeto con IList <String>. Una búsqueda rápida en MSDN reveló que el método Insert de IList <T> solo tiene una versión que toma un índice y un objeto T, y no tiene una versión que tome IEnumerable <T> en lugar de T. ¿Esto significa que? ¿Tengo que escribir un bucle sobre una lista de entrada para poner valores en la lista de destino? Si ese es el caso, me parece que el diseño de la API es muy limitado y bastante hostil. Tal vez, me estoy perdiendo algo. ¿Qué hacen los expertos en C # en este caso?


Debido a que una interfaz es generalmente la funcionalidad mínima requerida para que sea utilizable, para reducir la carga de los implementadores. Con C # 3.0 puedes agregar esto como un método de extensión:

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> ahora tiene AddRange :

IList<string> list = ... string[] arr = {"abc","def","ghi","jkl","mno"}; list.AddRange(arr);