Я знаю механизм для типов значений Nullable.Однако меня интересует следующее:
Типы значений Nullable работают со структурой (с https://referencesource.microsoft.com/#mscorlib/system/nullable.cs,ffebe438fd9cbf0e)
public struct Nullable<T> where T : struct {
public Nullable(T value) {
/* ... */
}
public bool HasValue {get;}
public T Value {get;}
}
Я могу использовать это как
Nullable<int> i = null;
Теперь я создаю свою собственную Nullable-Struct таким же образом:
public struct MyNullable<T> where T : struct {
public MyNullable(T value) {
/* ... */
}
public bool HasValue {get;}
public T Value {get;}
}
Почему я не могу сделать
MyNullable<int> i = null;
сейчас?
Я знаю, чтозначения struct не могут быть нулевыми, но почему значение struct Nullable может быть нулевым? Где механизм, который позволяет это?