Выражение переключателя в C# 8 недостаточно "умное"
Этот код прост, обычный переключатель:
bool? isSomething = strSomething switch
{
"I" => true,
"D" => false,
_ => null,
};
Однако компилятор выдает следующую ошибку:
CS0037 Невозможно преобразовать null в 'bool', поскольку это тип значения, не допускающий значения NULL
Переменная явно имеет значение nullable bool bool?
, почему компилятор С # не может понять это без того, чтобы мне пришлось привести нуль, чтобы заставить его работать:
_ => (bool?)null,
Я не правильно понимаю? разве гипс не нужен?
1 ответ
Решение
Для этого есть открытая проблема #2387 в языке C#. Что могло быть исправлено в этом кандидате на C# 9.