.net core 2.0更新后的十进制扩展方法错误

时间:2017-08-16 15:29:48

标签: .net-core-2.0

我有以下扩展方法类,用于双精度和小数。 编译器给我一个错误的调用

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);
    }
}

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”......这就是冲突。