【发布时间】:2013-01-29 13:56:16
【问题描述】:
为什么我不能将对象转换为十进制(代码如下,record["Cost"] 等于 1 (int))?
我收到以下错误
'无法拆箱记录["Cost"]'
我将使用TryParse 方法,但我不明白这个错误的来源。
cost = (decimal?) record["Cost"];
【问题讨论】:
标签: c# .net type-conversion
为什么我不能将对象转换为十进制(代码如下,record["Cost"] 等于 1 (int))?
我收到以下错误
'无法拆箱记录["Cost"]'
我将使用TryParse 方法,但我不明白这个错误的来源。
cost = (decimal?) record["Cost"];
【问题讨论】:
标签: c# .net type-conversion
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"];。不过,我们不知道情况是否如此。