IEnumerable<T>
在通过 foreach 或 LINQ 查询迭代它之前,我经常遇到检查 an 是否为 null 的问题,然后我经常遇到这样的代码:
var myProjection = (myList ?? Enumerable.Empty<T>()).Select(x => x.Foo)...
因此,我想将此扩展方法添加到扩展类中:
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();
您在使用它时看到任何其他缺点吗?
如果大量使用,这种扩展是否会导致开发人员出现某种不良趋势?
奖金问题:
你能给它推荐一个更好的名字吗? :)
(英语不是我的母语,那我的命名不太好……)
提前致谢。