Tout fluide est agréable, je serais plus intéressé à ajouter un AddRange
(ou deux):
public static void AddRange<T>(this ICollection<T> collection,
params T[] items)
{
if(collection == null) throw new ArgumentNullException("collection");
if(items == null) throw new ArgumentNullException("items");
for(int i = 0 ; i < items.Length; i++) {
collection.Add(items[i]);
}
}
public static void AddRange<T>(this ICollection<T> collection,
IEnumerable<T> items)
{
if (collection == null) throw new ArgumentNullException("collection");
if (items == null) throw new ArgumentNullException("items");
foreach(T item in items) {
collection.Add(item);
}
}
L'approche params T[]
permet AddRange(1,2,3,4,5)
etc, et le IEnumerable<T>
permet d'utiliser avec des choses comme les requêtes LINQ.
Si vous souhaitez utiliser une API couramment, vous pouvez également écrire Append
comme méthode d'extension en C# 3.0 qui préserve le type de liste originale, par l'utilisation appropriée des contraintes génériques:
public static TList Append<TList, TValue>(
this TList list, TValue item) where TList : ICollection<TValue>
{
if(list == null) throw new ArgumentNullException("list");
list.Add(item);
return list;
}
...
List<int> list = new List<int>().Append(1).Append(2).Append(3);
(note il retourne List<int>
)
Pourquoi ne pas simplement ajouter un AddRange (IEnumerable articles) à votre classe de collection? –
BFree
Mode, beauté et style. Je pourrais mais je me demandais si je pourrais le faire d'une autre manière aussi. – danmine