using static System.Console; ;
public class Person { public string Name; }
Person? x = null;
if (x is Person p) WriteLine(x.Name);
if (x is Person? p) WriteLine(x.Name); //<= почему не работает?
это же разные типы все-таки.
Здравствуйте, Разраб, Вы писали:
Р>это же разные типы все-таки.
Р>
Были бы разные, если бы это был Value Type.
Здравствуйте, Разраб, Вы писали:
Р>Р>using static System.Console; ;
Р>public class Person { public string Name; }
Р>Person? x = null;
Р>if (x is Person p) WriteLine(x.Name);
Р>if (x is Person? p) WriteLine(x.Name); //<= почему не работает?
Р>
Р>это же разные типы все-таки.
Р>
Ну так в ошибке же ясно написано: парсер это разбирает как тернарный оператор.
(x is Person) ? p : q
^
| missing!
Здравствуйте, Разраб, Вы писали:
Р>это же разные типы все-таки.
Р>
Нет конечно. Nullable для reference это не свойство типа, а свойство переменной.
Переменная, создаваемая match всегда не null, поэтому матчить с типом с nullable аннотацией нельзя