Вы можете обернуть нативный тип в структуру (быстрый пример, чтобы дать вам идею, непроверенную, много возможностей для улучшения):
public struct NullableDouble {
public bool hasValue = false;
private double _value;
public double Value {
get {
if (hasValue)
return _value;
else
throw new Exception(...);
}
set {
hasValue = true;
_value = value;
}
}
}
Очевидно, вы не получитесинтаксический сахар более новых версий C #, т.е. вы должны использовать myNullableDouble.hasValue
вместо myNullableDouble == null
и т. д. (см. комментарий Андреаса.)