【发布时间】:2025-12-19 03:45:06
【问题描述】:
我有两个代码示例。一个工作并返回正确的结果,一个抛出空引用异常。有什么不同?我知道捕获 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 的值? -
不。这是整个代码示例。