我知道我可以在if语句中包装整个foreach循环,但是我想知道是否有一些 new List<string>()
的对象值替换,以便在myList为null时执行的foreach跳过?在JavaScript中,我可以简单地将[]
放置在凝聚后,以指代将阻止foreach循环的空套件。
List<string> myList = null;
foreach (var i in myList ?? new List<string>() )
i.Dump();
不需要更改答案的不必要的背景信息: List<Entity>()
是我的实际列表,来自ASP.NET MVC数据绑定,因此我不控制创建它。我将实体框架数据库模型(POCO)用作控制器方法的输入,就像您使用控制函数一样,将函数的参数设置为将数据汇入表。POCO来自数据库,所以我也不控制。
只是寻找某种空的对象,我可以用来避免在不创建新对象的情况下运行循环。
我真的认为当MyList为Null时,引发例外是C#缺陷。如果是无效的,则无关紧要,因此循环应该跳过。
使用Enumerable.Empty<string>()
。
参见 c#对于任何返回空派生类型或 linq方法的 c#emptyifnull扩展,以将nulls转换为空的iEnumerable&lt; t&gt;?需要经常进行此检查。