【问题标题】:Conversion between object and decimal?对象和小数之间的转换?
【发布时间】:2013-01-29 13:56:16
【问题描述】:

为什么我不能将对象转换为十进制(代码如下,record["Cost"] 等于 1 (int))?

我收到以下错误

'无法拆箱记录["Cost"]'

我将使用TryParse 方法,但我不明白这个错误的来源。

cost = (decimal?) record["Cost"];

【问题讨论】:

    标签: c# .net type-conversion


    【解决方案1】:

    record["Cost"] 的值是一个装箱的 int。拆箱转换只允许您转换为 same 类型。 (至少在广义上;有一些差异,但它们在这里无关紧要。)

    你应该做的是将int拆箱,然后转换为decimal?

    cost = (decimal?) (int) record["Cost"];
    

    或者如果cost已经声明为decimal?类型,你可以使用隐式转换:

    cost = (int) record["Cost"];
    

    【讨论】:

    • 如果record["Cost"] 可能是一个空引用或一个装箱的int,并且他想要一个可以为空的decimal 怎么办?那么他可能想要decimal? cost = (int?) record["Cost"];。不过,我们不知道情况是否如此。
    • @JeppeStigNielsen:是的,这是可能的。
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2013-10-20
    • 2014-05-14
    • 2019-01-20
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多