Метод Add
был бы неоднозначным, поэтому я доволен явной реализацией ...
Queue[<T>]
и Stack[<T>]
имеют похожее поведение.
Для других (не входящих) любопытных явных членов - как насчет DbParameter.Precision
и DbParameter.Scale
.
В связи с проблемой переноса между ними - вы всегда можете написать ToLinkedList<T>
метод расширения для IEnumerable<T>
.
В качестве альтернативы - метод расширения AddRange<T>
имеет большое значение ...
static void Main()
{
var list = new LinkedList<int>();
list.AddRange(1, 2, 3, 4, 5);
}
static void AddRange<T>(this ICollection<T> list, params T[] values)
{
foreach (T value in values)
{
list.Add(value);
}
}
( EDIT ) Вы также можете использовать «свободный» API, если вы хотите использовать его как одно выражение:
static void Main()
{
var list = new LinkedList<int>().AddRange(1, 2, 3, 4, 5);
// `list` is correctly a LinkedList<int> here
}
static TCollection AddRange<TCollection, TValue>(
this TCollection collection, params TValue[] values)
where TCollection : ICollection<TValue>
{
foreach (TValue value in values)
{
collection.Add(value);
}
return collection;
}