我有以下扩展方法类,用于双精度和小数。 编译器给我一个错误的调用
number.Round(2)
number.Round(3)
在十进制方法中但不会抱怨double值的相同方法。 知道为什么吗?
这是代码......易于复制......
public static class NumberExtensions
{
public static double Round(this double number, int decimals)
{
return Math.Round(number, decimals);
}
public static double Round3(this double number)
{
return number.Round(3);
}
public static double Round2(this double number)
{
return number.Round(2);
}
public static decimal Round(this decimal number, int decimals)
{
return Math.Round(number, decimals);
}
public static decimal Round3(this decimal number)
{
return number.Round(3);
}
public static decimal Round2(this decimal number)
{
return number.Round(2);
}
}
答案 0 :(得分:0)
报告的错误是:
错误CS0176无法访问成员'decimal.Round(十进制)' 实例引用;使用类型名称来限定它
可能的原因&解决方案:Error with rounding extension on decimal - cannot be accessed with an instance reference; qualify it with a type name instead
<强>更新强>
.net核心版本&lt; 2.0,以下声明:
decimal.Round(3);
错误CS0117'十进制'不包含'Round'的定义
但.net core 2.0的有效声明,因为它涵盖了.NET Framework与以前的.net核心版本相比更多的内容,
以下引自https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-net-core-2-0/:
我们在.NET Standard中提供了超过一倍的可用API 从.NET Standard 1.6中的13k到.NET Standard 2.0中的32k。大部分的 添加的API是.NET Framework API
答案 1 :(得分:0)
Okey得到了它。
在.NET Core中,添加了一个十进制静态方法,并命名为“Round”......这就是冲突。