我有两个代码示例。一个工作并返回正确的结果,一个抛出一个空引用异常。有什么不同?我知道在捕获lambda表达式的变量时会发生一些魔法,但我不明白幕后的情况。Lambda表达式和可空类型
int? x = null;
bool isXNull = !x.HasValue;
// this works
var result = from p in data.Program
where (isXNull)
select p;
return result.Tolist();
// this doesn't
var result2 = from p in data.Program
where (!x.HasValue)
select p;
return result2.ToList();
你可能在你的'return'语句之前改变了x的值吗? – 2010-05-31 03:48:18
不是。这是整个代码示例。 – Mathew 2010-05-31 03:56:55