我知道我可以在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数据绑定,因此我无法控制创建它。我使用Entity Framework数据库模型(POCO)作为Controller方法的输入,就像使用控制函数一样,设置函数的参数以将数据流式传输到表中。 POCO来自数据库,因此我也无法控制它。
只是寻找某种空对象文字我可以用来避免在不创建新对象的情况下运行循环。
我真的认为当myList为null时抛出异常是一个C#漏洞。如果它为null,则无需执行任何操作,因此循环应该跳过。
答案 0 :(得分:3)
如果您需要经常进行此检查,请参阅 C# EmptyIfNull extension for any IEnumerable to return empty derived type 或 Linq method to transform nulls into empty IEnumerable<T>? 以了解您可以使用的扩展程序。