【问题标题】:C#/.NET: Why can't I cast this decimal to an int? [duplicate]C#/.NET:为什么我不能将此十进制转换为 int? [复制]
【发布时间】:2011-09-12 12:31:04
【问题描述】:

可能重复:
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(),但我试图弄清楚这在这里不起作用。

【问题讨论】:

标签: c# casting decimal int


【解决方案1】:

因为框架中定义了从十进制到整数的显式转换。阅读此MSDN documentation

【讨论】:

  • 这个答案是完全错误的。存在显式转换这一事实,并不能以任何方式解释为什么在 取消装箱 值时不允许转换。另一方面,这个问题的副本有一个公认的答案,可以准确解释问题所在。
猜你喜欢
  • 1970-01-01
  • 2015-04-15
  • 2011-07-02
  • 1970-01-01
  • 2015-04-04
  • 2015-09-17
  • 2019-10-24
  • 2021-01-02
  • 1970-01-01
相关资源
最近更新 更多