我有以下声明:
AnotherClass temp = myCustomList
.Where(x => x.bTyp != null && x.bTyp is IEnumerable<T>)
.FirstOrDefault();`
上面的陈述说temp
是null
,但它不是。{/ p>
T
获取List
的{{1}}的通用MyCustomClass
,如List<MyCustomClass>
。
x.bTyp
的值为typeof(IEnumerable<MyCustomClass>))
。
调试器为我提供了myCustomList
这样的内容:
bTyp = {System.Collections.Generic.IEnumerable
1 [... MyCustomClass]}`
我应该如何重写temp
不是null
并且会返回结果的声明?
答案 0 :(得分:0)
Temp为null,因为Where()调用返回0结果而FirstOrDefault()返回默认值(为null)。
要进行调试,请将光标放在lambda表达式中并添加断点(默认值:F9)。运行程序。
当调试器到达断点时,在监视窗口中放置布尔表达式(x.bTyp!= null和x.bTyp是IEnumerable)以验证所需的结果。你有可能在这里遗漏一些东西。