我刚刚阅读了一篇 SO帖子,该帖子解释了FirstOrDefault()
' 的返回类型将根据所选元素的值而有所不同。
例子:
ICollection<String> list = new List<String>();
list.Add("bye");
int a = (from x in list where (x == "hi") select x.Length).FirstOrDefault();
在此示例中,a
将等于 0,因为int
默认值为 0。
但是,我可以.Cast<int?>()
根据已链接的帖子追加,以便null
在查询返回 0 结果时获取。
int? a = (from x in list where ... x.Length).Cast<int?>().FirstOrDefault();
int?
对于我的第一个示例,当我使用 Nullable int ( ) 而不是常规时,为什么我不会收到编译时错误(或至少是警告)int
?
如果我理解正确,int?
在执行我的第一个查询时使用 a永远不会产生null
.