使用LINQ查询语法查询空集合时会发生什么?

Osc*_*Ryz -1 c# linq collections null

我的理解是什么都不会发生.

例如这段代码:

foreach (var some in (from u in possiblyNullCollection ) ) 
{
    // 
}
Run Code Online (Sandbox Code Playgroud)

应该守卫如下:

if ( possiblyNullCollection != null ) 
{ 
    foreach (var some in (from u in possiblyNullCollection ) ) 
    {
     // 
    }
}
Run Code Online (Sandbox Code Playgroud)

或者查询空集合是否安全?

Dan*_*gby 18

如果使用LINQ查询它,则null集合将引发异常.你需要检查null.

然而,空集合很好.

要记住的一点是,通常认为集合为空的不良做法.与集合中的null项类似,它可能会导致很多错误.

LINQPad窗口显示查询结果

  • 通常,处理它的最佳方法是不允许集合开始为null.如果它是类字段,则将其初始化为空集合.如果它是方法参数,请在方法开头检查它为null,如果是,则抛出ArgumentNullException.假设你必须出于任何原因处理null集合,你可以像你一样将foreach包装在if块中,或者你可以在foreach块中使用null coalesce运算符,就像这个`foreach(var some in in(from in in) maybeNullCollection ?? Enumerable.Empty <T>())))`其中T是项的类型. (7认同)