switch-statement - C# 8 switch 表达式 "smart"不够

标签 switch-statement c#-8.0 switch-expression

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

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

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

CS0037 Cannot convert null to 'bool' because it is a non-nullable value type

这个变量显然是一个可为 null 的 bool bool?,为什么 c# 编译器不能在我不必强制转换 null 来使其工作的情况下弄清楚这一点:

_   => (bool?)null,

我没听懂吗? Actor 阵容不是不必要的吗?

最佳答案

有一个打开的issue #2387为此,在 c# lang 中。可以在 this candidate 中修复对于 c# 9。

关于switch-statement - C# 8 switch 表达式 "smart"不够,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57846038/

相关文章:

c - switch 和 if 语句顺序(机器人 C)

C#8 可空和不可空引用类型 - 仅当输入可为空时输出可为空

c#-8.0 - 为什么仍然可以将 null 分配给不可为 null 的引用类型?

c# - 如果我的 C# switch 表达式不是详尽的,会发生什么?

c#-8.0 - C# 开关表达式 null 情况

java - 我是否以正确的方式使用 switch 语句

c++ - 为什么 switch 只能与 const 值进行比较?

c# - C# 8.0 默认接口(interface)成员的意外行为

c# - 新的 C# 8.0 switch 表达式的运算符优先级是什么?

java - If else vs switch with stack 逻辑