使用时出现奇怪错误?操作人员

本文关键字:错误 操作 | 更新日期: 2023-09-27 18:19:45

可能重复:
无法确定条件表达式的类型?

我现在写了这样的声明:

byte? Col_8 = (Rad_8.SelectedValue == null) ? null : byte.Parse(Rad_8.SelectedValue);

但它有这个错误:

无法确定条件表达式的类型,因为'<null>''byte' 之间没有隐式转换

为什么我可以在?之后使用null?如果没有if语句的上述代码等价物会怎样?

使用时出现奇怪错误?操作人员

编译器无法推断条件语句的类型,因为null没有类型,也没有考虑预期的返回值。使用

(Rad_8.SelectedValue == null) ? (byte?)null : byte.Parse(Rad_8.SelectedValue);
if(Rad_8.SelectedValue == null)
    Col_8 = null;
else 
    Col_8 = byte.Parse(Rad_8.SelectedValue);  

我认为这是因为方法byte.Parse(...)不返回可为null的类型,因此编译器表示null-和byte-类型之间没有隐式转换。尝试使用(byte?)强制转换null值以显式指定其类型。