Функция, возвращающая универсальный тип, допускающий значение NULL, не возвращает правильный типC#

Место общения программистов C#
Anonymous
Функция, возвращающая универсальный тип, допускающий значение NULL, не возвращает правильный тип

Сообщение Anonymous »


Я пытаюсь определить функцию, которая возвращает версию переданного значения, допускающую значение NULL, а затем применяет ее с логическим значением.

с использованием системы; #nullable включить Программа общественного класса { общественная статическая пустота Main() { Console.WriteLine(Test(true, true) ?? false); } публичная статика A? Test(A val, bool useNull) => использоватьNull ? по умолчанию (A?): значение; } Однако это дает мне ошибку:

Ошибка компиляции (строка 11, столбец 21): оператор '??' нельзя применить к операндам типа bool и bool

Но мне не совсем понятно, почему выдается эта ошибка - ведь Test() должен возвращать тип bool?, а не bool, поэтому использование ?? должно быть совершенно законным.

Это ошибка в функции C#, допускающей значения NULL, или я неправильно понимаю, как она должна работать?

Как бы то ни было, если я перепишу Test(), чтобы он был неуниверсальным, похоже, это сработает:

public static bool? Test(bool val, bool useNull) => использоватьNull ? ноль: вал; Но я пытаюсь понять, почему общая версия не работает.

Вернуться в «C#»