2012-08-24 146 views
0
select new 
{ 
Selected = (cvf != null && cvf.Deleted==false) 
} 

即使cvf为空,上述语句也会检查cvf.Deleted。然后它会抛出一个无效的对象引用错误。Linq和匿名类型

我该如何解决这个问题?

+0

无效的对象引用或空引用? – CodingGorilla

+0

未将对象引用设置为对象的实例 – developer747

+3

您有没有在cvf类型上定义!=运算符?如果你这样做,也许它没有正确实施?我会建议查看抛出异常的堆栈跟踪。 – Lukazoid

回答

1

可能还有其他事情发生,因为&&short-circuit evaluate。也就是说,试试这个:

select new 
{ 
    Selected = cvf != null 
     ? !cvf.Deleted 
     : false 
}; 
+1

无论你如何看待'(cvf!= null && cvf.Deleted == false)'应该总是评估为'true'或'false',并且不会抛出NRE。但我同意,这个故事还有更多... – CodingGorilla