【发布时间】:2020-01-10 18:00:02
【问题描述】:
这段代码很简单,就是一个普通的开关:
bool? isSomething = strSomething switch
{
"I" => true,
"D" => false,
_ => null,
};
但是,编译器给了我以下错误:
CS0037 无法将 null 转换为 'bool',因为它是不可为空的值类型
这个变量显然是一个可以为空的 bool bool?,为什么 c# 编译器不能在我不必强制转换 null 以使其工作的情况下解决这个问题:
_ => (bool?)null,
我没有做对吗?演员不是不必要的吗?
【问题讨论】:
-
因为表达式通常不是目标类型的。
condition ? 1 : null也失败了。也不是小事,如果将表情嵌入到更大的表情中呢?那么正确的类型是什么?
标签: switch-statement c#-8.0 switch-expression