我正在尝试编写一个接受doubledouble?的扩展方法。

public static class ExtensionMethod
{
    public static string ToFixedScale(this double? value)
    {
        return value.HasValue ? (Math.Truncate(value.Value * 100) / 100).ToString("0.00") : null;
    }
}

它适用于dobule?,但不适用于double。有没有办法我可以同时对double和double使用此扩展方法?

编辑:由于所有用户都建议使用double和double两种扩展方法?不是相同的类型,我敢肯定这可能是愚蠢的问题,但是扩展方法是否可以接受多种类型?

最佳答案

Nullable<double>double是两种不同的类型。尽管在这些类型之间确实存在隐式转换,但是另一种类型将找不到一种扩展方法。您将需要使用接受double作为参数的版本来重载您的方法:

public static class ExtensionMethod
{
    public static string ToFixedScale(this double value)
    {
        return Math.Truncate(value * 100) / 100).ToString("0.00");
    }

    public static string ToFixedScale(this double? value)
    {
        return value.HasValue ? ToFixedScale(value.Value) : null;
    }
}

关于c# - 双重和双重的扩展方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41257593/

10-17 00:16