Rop*_*tah 2 linq vb.net nullreferenceexception
如何NullReferenceException在以下场景中获得?
Dim langs As IEnumerable(Of SomeCustomObject) = //some LINQ query
If langs Is Nothing Then Return Nothing
If langs.Count = 1 Then //NullReferenceException here
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?Debug显示这langs实际上只是一个没有任何结果的LINQ queryresult ...
例外情况可能来自对LINQ查询的评估.LINQ查询以惰性方式进行评估:即,在实际使用该值之前,实际上不会执行任何代码.
例如,如果你有以下(我不知道VB的LINQ语法,所以这是C#,但同样的事情适用):
string str = null;
IEnumerable<char> chs = from ch in str select ch;
if (chs.Count() == 0) // NullReferenceException here
Run Code Online (Sandbox Code Playgroud)
此外,您永远不会null从创建LINQ查询返回,因此If langs Is Nothing不需要您的检查.