我有以下代码:
IList<object> testList = null;
...
if (testList != null) // <- how to get rid of this check?
{
foreach (var item in testList)
{
//Do stuff.
}
}
是否有办法在if
之前避免 foreach
?我看到了一些解决方案,但是使用List
时是否有解决方案?
答案 0 :(得分:6)
好吧,您可以尝试使用??
运算符:
testList ?? Enumerable.Empty<object>()
我们本身得到testList
或空白IEnumerable<object>
:
IList<object> testList = null;
...
// Or ?? new object[0] - whatever empty collection implementing IEnumerable<object>
foreach (var item in testList ?? Enumerable.Empty<object>())
{
//Do stuff.
}
答案 1 :(得分:3)
尝试一下
IList<object> items = null;
items?.ForEach(item =>
{
// ...
});
答案 2 :(得分:0)
我从项目中窃取了以下扩展方法:
public static IEnumerable<T> NotNull<T>(this IEnumerable<T> list)
{
return list ?? Enumerable.Empty<T>();
}
然后像这样方便地使用
foreach (var item in myList.NotNull())
{
}
答案 3 :(得分:0)
您可以创建如下扩展方法:
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Enumerable.Empty<T>().ToList();
}
然后您可以编写:
foreach (var item in testList.OrEmptyIfNull())
{
}