nullable match
От: Разраб  
Дата: 15.11.23 02:39
Оценка:
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); //<= почему не работает?

это же разные типы все-таки.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: nullable match
От: IT Россия linq2db.com
Дата: 15.11.23 05:13
Оценка: 6 (1) +1
Здравствуйте, Разраб, Вы писали:

Р>это же разные типы все-таки.

Р>

Были бы разные, если бы это был Value Type.
Если нам не помогут, то мы тоже никого не пощадим.
Re: nullable match
От: Sinclair Россия https://github.com/evilguest/
Дата: 15.11.23 05:20
Оценка: 6 (1)
Здравствуйте, Разраб, Вы писали:


Р>
Р>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!
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: nullable match
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 15.11.23 07:24
Оценка: 3 (1)
Здравствуйте, Разраб, Вы писали:

Р>это же разные типы все-таки.

Р>

Нет конечно. Nullable для reference это не свойство типа, а свойство переменной.

Переменная, создаваемая match всегда не null, поэтому матчить с типом с nullable аннотацией нельзя
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.