我正在尝试编写一个接受double
和double?
的扩展方法。
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/