使用三元运算符将null指定给十进制
我正在使用转换为byte array
decimal
,这样它包含null
或任何其他数字,存储在byte中。 这里的问题是,当我尝试将null
转换为Nullable decimal
,它将其转换zero
。 我希望它保持为null
…
Convert.ToDecimal(obj.sal== null ? null : System.Text.Encoding.ASCII.GetString(obj.sal))
如果您希望结果可能为null,那么您不应该调用Convert.ToDecimal
– 它总是返回decimal
。 相反,你应该使用:
x = obj.sal == null ? (decimal?) null : Convert.ToDecimal(Encoding.ASCII.GetString(obj.sal));
请注意,您必须将null
文字转换为decimal?
– 或使用其他forms,如default(decimal?)
以便第二个操作数的类型是decimal?
– 否则编译器将无法推断条件表达式的类型。 有关详细信息,请参阅此问题 。
因为null是object类型(实际上是无类型的),您需要将其分配给类型化对象。
x = obj.sal == null ? (decimal?) null : Convert.ToDecimal(Encoding.ASCII.GetString(obj.sal));