C# 什么对象文字可以阻止foreach循环循环?

C# 什么对象文字可以阻止foreach循环循环?,c#,foreach,null-object-pattern,C#,Foreach,Null Object Pattern,我知道我可以将整个foreach循环封装在if语句中,但我想知道是否有一些对象文本值替换为newlist(),以便在myList为null时foreach跳过执行?在Javascript中,我可以简单地将[]放在合并之后,以引用将停止foreach循环的空集 List<string> myList = null; foreach (var i in myList ?? new List<string>() ) i.Dump(); List myList=nul

我知道我可以将整个foreach循环封装在if语句中,但我想知道是否有一些对象文本值替换为
newlist()
,以便在myList为null时foreach跳过执行?在Javascript中,我可以简单地将
[]
放在合并之后,以引用将停止foreach循环的空集

List<string> myList = null;

foreach (var i in myList ?? new List<string>() )
    i.Dump();
List myList=null;
foreach(myList中的变量i??新列表())
i、 Dump();
不必要的背景信息不会改变答案:
List()
是来自ASP.NET MVC数据绑定的实际列表,因此我无法控制创建它。我使用实体框架数据库模型(POCO)作为控制器方法的输入,就像您使用控制函数一样,设置函数的参数以将数据流到表中。POCO来自数据库,所以我也不能控制它

只是寻找某种类型的空对象文字,我可以使用它来避免在不创建新对象的情况下运行循环

我真的认为当myList为null时抛出异常是一个C#缺陷。如果为null,则无需执行任何操作,因此循环应跳过。

使用


如果需要经常进行此检查,请参阅或,以了解可以使用的扩展方法。

使用@dbc,这很有效。把答案贴出来,我会记下来的。谢谢,或者你是否需要经常检查。@dbc你有很多缺点,我真的认为当myList为null时抛出异常是一个C#缺陷。-我倾向于同意。我曾经不得不通过动态更新一个复杂的CAD模型(200k+几何对象)来解决性能问题,在这个模型中,花费了大量的时间来计算大量的空集合。我所说的“可测量的”是指1/40秒,但更新必须在1/4秒内完成,因此计算收集量所花费的时间,尽管只是问题的一小部分,实际上很重要。但我的经历有点不同寻常。