使用三元运算符将null分配给十进制

fai*_*gir 4 c#

我正在使用转换为decimala byte array,使其包含null以字节存储的任一或任何其他数字.这里的问题是,当我尝试将转换nullNullable decimal,将其转换它zero.我希望它继续null......

Convert.ToDecimal(obj.sal== null ? null : System.Text.Encoding.ASCII.GetString(obj.sal))
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 13

如果您希望结果可能为null,那么您不应该调用Convert.ToDecimal- 它总是返回decimal.相反,你应该使用:

x = obj.sal == null ? (decimal?) null 
                    : Convert.ToDecimal(Encoding.ASCII.GetString(obj.sal));
Run Code Online (Sandbox Code Playgroud)

请注意,您必须将null文字转换为decimal?- 或使用其他形式,default(decimal?)以便第二个操作数的类型为decimal?- 否则编译器将无法推断条件表达式的类型.有关详细信息,请参阅此问题.