Часто методы принимают IEnumerable, а передавать хочется всего один элемент.
Решил написать хелпер:
public static IEnumerable<T> ToEnumerable<T>(this T value)
{
return new[] { value };
}
Наивным тестами выяснил, что он быстрее чем
yield return value;
(хоть и уступает по зажору памяти), и экономичнее по памяти чем:
return Enumerable.Repeat(value, 1);
(при почти идентичной производительности).
Есть ли более быстрый способ?
PS:
На счет памяти есть сомнения. Мерил через:
GC.GetTotalMemory(false)
, если мерить через
Environment.WorkingSet
, то массив и по памяти самый экономичный.
Даже самую простую задачу можно сделать невыполнимой, если провести достаточное количество совещаний