2012-01-09 65 views
1

Possible Duplicate:
The type of the conditional expression can not be determined?奇怪的错误使用?操作

我目前写了这样一句话:

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

,但它有这个错误:

Type of conditional expression cannot be determined because there is no implicit conversion between '<null>' and 'byte'

为什么我可以?后使用空?如果没有if声明,相当于上述代码呢?

+0

什么是Rad_8.SelectedValue类型? – CharlesB 2012-01-09 11:55:22

回答

8

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

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

我相信这是因为byte.Parse(...)不返回可空类型的方法,因此编译器说有没有null之间的隐式转换 - 和byte -types。尝试将null值与(byte?)值相加以明确指定其类型。