对象和小数之间的转换?

时间:2013-01-29 13:56:17

标签: c# .net type-conversion

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

我收到以下错误

'无法取消装箱记录[“费用”]'

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

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

1 个答案:

答案 0 :(得分:6)

record["Cost"]的值是一个盒装的int。取消装箱转化仅允许您转换为相同的类型。 (至少在广义上;存在一些差异,但它们在这里无关紧要。)

你应该做的是取消装箱到int然后转换为decimal?

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

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

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