В С# 3.0 вы можете присвоить значение null для int? тип (в CLR int? является структурой):
int? a = null;
но когда вы определяете пользовательскую структуру:
struct MyStruct
{
}
при компиляции этого кода возникает ошибка:
MyStruct a = null;
Ошибка заключается в следующем:
Cannot convert null to 'Example.MyStruct' because it is a non-nullable value type
В то время как инт? является структурой в CLR, как-то нелогично, что мы можем присвоить ей значение null. Я полагаю, что null неявно приводится или помещается в certian int? значение, представляющее нулевое значение. Как именно это делается? Как я могу расширить MyStruct таким образом, чтобы можно было выполнить строку:
MyStruct a = null;