Почему (Guid?) Null ?? по умолчанию вернуть пустой идентификатор

Вывод из непосредственного окна VS

default(Guid?)
=> null
(Guid?)null == default
=> true
(Guid?)null ?? default
=> {00000000-0000-0000-0000-000000000000}

Я ожидал, что последним будет null, а не Guid.Empty. Так почему это так?


person Michael Prüfer    schedule 23.02.2021    source источник
comment
(Guid?)null имеет значение null, поэтому вы получаете правую часть ??. default(Guid) равно Guid.Empty.   -  person GSerg    schedule 23.02.2021
comment
@GSerg, но скажу, что у меня есть переменная: Guid? toCheck = null делай какие-нибудь причудливые вещи, может быть, установлен на Проверку или нет, а позже я проверяю var result = toCheck ?? default;, я бы не ожидал, что результат будет Guid.Empty   -  person Michael Prüfer    schedule 23.02.2021
comment
С var g1 = (Guid?)null; var g2 = g1 ?? default; вы можете заметить, что предполагаемый тип Guid? для g1 и Guid для g2. Изменив последнее значение на var g2 = g1 ?? default(Guid?);, вы можете сделать g2 также Guid?.   -  person GSerg    schedule 23.02.2021
comment
@GSerg Да, спасибо   -  person Michael Prüfer    schedule 23.02.2021