c# 什么对象文字可以阻止 foreach 循环循环?
c# what object literal could stop a foreach loop from looping?
我知道我可以将整个 foreach 循环包装在一个 if 语句中,但我想知道是否有一些对象文字值替换 new List<string>()
以便 foreach 在 myList 为 null 时跳过执行?在 Javascript 中,我可以简单地将 []
放在合并之后,以引用将停止 foreach 循环的空集。
List<string> myList = null;
foreach (var i in myList ?? new List<string>() )
i.Dump();
不改变答案的不必要的背景信息:
List<Entity>()
是来自 ASP.NET MVC 数据绑定的实际列表,因此我无法控制创建它。我使用 Entity Framework 数据库模型 (POCO) 作为控制器方法的输入,就像您使用控制函数一样,设置函数的参数以将数据流向 table。 POCO来自数据库,所以我也不控制。
只是在寻找某种空对象文字,我可以用它来避免 运行 循环而不创建新对象。
我真的认为当 myList 为 null 时抛出异常是 C# 的缺陷。如果为空,则无事可做,因此循环应该跳过。
如果您需要经常进行此检查,请参阅 or Linq method to transform nulls into empty IEnumerable<T>? 了解可以使用的扩展方法。
我知道我可以将整个 foreach 循环包装在一个 if 语句中,但我想知道是否有一些对象文字值替换 new List<string>()
以便 foreach 在 myList 为 null 时跳过执行?在 Javascript 中,我可以简单地将 []
放在合并之后,以引用将停止 foreach 循环的空集。
List<string> myList = null;
foreach (var i in myList ?? new List<string>() )
i.Dump();
不改变答案的不必要的背景信息:
List<Entity>()
是来自 ASP.NET MVC 数据绑定的实际列表,因此我无法控制创建它。我使用 Entity Framework 数据库模型 (POCO) 作为控制器方法的输入,就像您使用控制函数一样,设置函数的参数以将数据流向 table。 POCO来自数据库,所以我也不控制。
只是在寻找某种空对象文字,我可以用它来避免 运行 循环而不创建新对象。
我真的认为当 myList 为 null 时抛出异常是 C# 的缺陷。如果为空,则无事可做,因此循环应该跳过。
如果您需要经常进行此检查,请参阅