我正在转换为decimal
的{{1}},因此它包含byte array
或以字节存储的任何其他数字。这里的问题是,当我尝试将null
转换为null
时,会将其转换为Nullable decimal
。我希望它保持zero
...
null
答案 0 :(得分:13)
如果您希望结果可能为null,那么您不应该调用Convert.ToDecimal
- 它总是返回decimal
。相反,你应该使用:
x = obj.sal == null ? (decimal?) null
: Convert.ToDecimal(Encoding.ASCII.GetString(obj.sal));
请注意,您必须将null
字面值转换为decimal?
- 或者使用其他形式,例如default(decimal?)
,以便第二个操作数的类型为decimal?
- 否则编译器将无法推断条件表达式的类型。有关详细信息,请参阅this question。
答案 1 :(得分:1)
因为null是object类型(实际上是无类型的),你需要将它分配给一个类型化的对象。
x = obj.sal == null ? (decimal?) null
: Convert.ToDecimal(Encoding.ASCII.GetString(obj.sal));