2

这段代码很简单,只是一个普通的开关:

bool? isSomething = strSomething switch
{
    "I" => true,
    "D" => false,
    _   => null,
};

但是,编译器给了我以下错误:

CS0037 无法将 null 转换为“布尔”,因为它是不可为空的值类型

该变量显然是一个可为空的 bool bool?,为什么 c# 编译器不能在我不必强制转换 null 以使其工作的情况下解决这个问题:

_   => (bool?)null,

我没有做对吗?演员不是不必要的吗?

4

1 回答 1

3

在 c# lang 中有一个未解决的问题 #2387。这可以在这个c# 9的候选人中修复。

于 2019-09-08T22:28:10.607 回答