Я часто сталкиваюсь с проблемой, чтобы проверить, является ли IEnumerable<T>
нулевым, прежде чем итерировать его через запросы foreach или LINQ, тогда я часто сталкиваюсь с такими кодами:
var myProjection = (myList ?? Enumerable.Empty<T>()).Select(x => x.Foo)...
Следовательно, я подумал добавить этот метод расширения в класс Extensions:
public static class MyExtensions
{
public static IEnumerable<T> AsEmptyIfNull<T>(this IEnumerable<T> source)
{
return source ?? Enumerable.Empty<T>();
}
}
При взгляде на этот код сразу возникает небольшая проблема, т. Е. Учитывая "аспект-методы-аспекта" расширений-методов, он должен быть реализован как простой статический метод, в противном случае что-то вроде это было бы совершенно законно:
IEnumerable<int> list = null;
list.AsEmptyIfNull();
Видите ли вы какой-либо другой недостаток в его использовании?
Может ли такое расширение привести к какой-то плохой тенденции в разработчике (ях), если широко используется?
Бонусный вопрос:
Можете ли вы предложить ему лучшее имя? :)
(Английский не мой родной язык, тогда я не так хорош в названии ...)
Заранее спасибо.