Nullable Type实现没有C#的可空特征

kou*_*des 9 .net c# nullable

如果我们在C#中没有这个功能,我们如何在C#中实现可空类型?

Hei*_*nzi 5

您可以将本机类型包装到结构中(快速示例为您提供一个想法,未经测试,有很多改进空间):

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

显然,你不会得到更新的C#版本的语法糖,即你必须使用myNullableDouble.hasValue而不是myNullableDouble == null等等(参见Andreas的评论.)

  • 你可以使用比较 - 只要你覆盖例如.需要操作员或实现正确的界面 (2认同)