Функция, возвращающая универсальный тип, допускающий значение NULL, не возвращает правильный тип ⇐ C#
Функция, возвращающая универсальный тип, допускающий значение NULL, не возвращает правильный тип
Я пытаюсь определить функцию, которая возвращает версию переданного значения, допускающую значение 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 ? ноль: вал; Но я пытаюсь понять, почему общая версия не работает.
Я пытаюсь определить функцию, которая возвращает версию переданного значения, допускающую значение 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#, не допускающий значения NULL, с собственными коллекциями Unity
Anonymous » » в форуме C# - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-