【发布时间】:2013-03-14 10:46:39
【问题描述】:
所以我收集了structs 的集合(它实际上是一个 WCF 数据合同,但我认为这与这里无关)。
List<OptionalExtra> OptionalExtras;
OptionalExtra 是 struct。
public partial struct OptionalExtra
现在我正在运行以下语句:
OptionalExtra multiOptExtra = OptionalExtras.Where(w => w.Code == optExtra.Code).FirstOrDefault();
if (multiOptExtra != null)
{
}
现在这不会编译:
运算符 != 不能应用于 OptionalExtra 类型的操作数 和
'<null>'
经过一番谷歌搜索后,我意识到这是因为 OptionalExtra 是 struct。除非定义为可空类型,否则我认为哪个不可为空?
所以我的问题是,如果我的where 语句没有返回任何结果,那么FirstOrDefault 调用的结果是什么?会不会抛出异常?
顺便说一句,这不应该永远不会发生,但总比抱歉更安全。
【问题讨论】: