Во время работы с расширениями Linq нормальный вид выглядит следующим образом:
IEnumerable<int> enumerable = GetEnumerable();
int sum = 0;
if (enumerable != null)
{
sum = enumerable.Sum();
}
Чтобы повысить качество кода, я написал следующий метод расширения, который проверяет нулевые числа и прерывает выполнение linq.
public static IEnumerable<T> IgnoreIfEmpty<T>(this IEnumerable<T> enumerable)
{
if (enumerable == null) yield break;
foreach (var item in enumerable)
{
yield return item;
}
}
Итак, я могу реорганизовать код таким образом:
var sum = GetEnumerable().IgnoreIfEmpty().Sum();
Мои вопросы сейчас:
- Какие штрафы связаны с моим методом расширения во время выполнения?
- Является ли хорошей практикой расширение linq таким образом?
Update: Моя целевая структура: 3.5