每个循环都没有集合 - 如何处理它?

Hel*_*rld 6 vb.net

当集合什么都没有时我如何处理每个循环,我认为它会跳过但我得到一个例外?

我是否需要将foreach循环包装在if中以检查什么,只有当它不是什么都没有时,然后输入for each循环?

For Each item As String In MyStringList 

    'do something with each item but something myStringList will be nothing?


Next
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 9

我是否需要将foreach循环包装在if中以检查什么,只有当它不是什么都没有时,然后输入for each循环?

是.

If MyStringList IsNot Nothing Then
    For Each item As String In MyStringList 
       'do something ...
    Next
End If
Run Code Online (Sandbox Code Playgroud)

微软称它是按设计的:

我认为大多数foreach循环都是为了迭代非null集合而编写的.如果你尝试迭代null,你应该得到你的异常,以便你可以修复你的代码.Foreach基本上是一种语法上的便利.因此,它不应该是"神奇的",并在引擎盖下做出意想不到的事情.我同意提议使用空集合而非null的帖子.(它们通常可以使用单例技术重复使用).

  • 你宁愿使用[专利](http://yro.slashdot.org/story/05/02/22/1310232/microsofts-isnot-patent-continued)`IsNot`运算符吗? (3认同)