2012-01-09 64 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?)值相加以明確指定其類型。