-1

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

List<string> myList = null;

foreach (var i in myList ?? new List<string>() )
    i.Dump();

不会改变答案的不必要的背景信息: List<Entity>()是我来自 ASP.NET MVC 数据绑定的实际列表,所以我不控制创建它。我使用实体框架数据库模型 (POCO) 作为 Controller 方法的输入,就像您使用控制函数一样,设置函数的参数以将数据流向表。POCO 来自数据库,所以我也不控制它。

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

我真的认为当 myList 为空时抛出异常是一个 C# 缺陷。如果它为空,则无事可做,因此应该跳过循环。

4

1 回答 1

3

使用Enumerable.Empty<string>().

请参阅C# EmptyIfNull 扩展以了解任何 IEnumerable 以返回空派生类型Linq 方法以将空值转换为空 IEnumerable<T>?如果您需要经常进行此检查,您可以使用扩展方法。

于 2017-12-15T19:24:20.770 回答