C#/ .NET:为什么我不能将这个小数转换为int?

时间:2011-06-10 13:36:24

标签: c# casting decimal int

  

可能重复:
  Why can't I unbox an int as a decimal?

好的,C#/。NET大师,有人可以告诉我为什么这个演员有效:

static void Main(string[] args)
{
    int _int = 0;
    decimal _decimal = 1;

    _int = (int)_decimal;

    Console.ReadLine();
}

......但这些都没有?

static void Main(string[] args)
{
    int _int = 0;
    decimal d = 1;
    object _decimal = d;

    _int = (int)_decimal;

    Console.ReadLine();
}

static void Main(string[] args)
{
    int _int = 0;
    object _decimal = 1M;

    _int = (int)_decimal;

    Console.ReadLine();
}

我可以将一个小数转换为int,只要我从中转换的是一个显式声明的十进制类型,但是当小数存储在对象类型中时,我不能将小数转换为int?怎么了?

注意:我知道我可以使用Convert.ToInt32(),但我试图弄清楚这里这个不起作用。

1 个答案:

答案 0 :(得分:3)

因为在框架中定义了从decimal到int的显式转换。阅读此MSDN documentation