2011-03-25 14 views
1

我留下了一些代碼出來簡潔中......爲什麼我不能投一個int一個字符串這個三元操作

int id = Convert.ToInt32(Page.RouteData.Values["id"]); 
var q = db.Categories.SingleOrDefault(x => x.categoryID == id); 

ddlCategory.SelectedValue = q.parentID == 0 ? 0 : id.ToString(); 

我得到的錯誤:

條件表達式的類型不能被確定,因爲有「廉政」和「串」之間的隱式轉換(它談論id.ToString()片。)

我試圖Convert.ToString(),我試圖把(string)id但這沒有奏效。

回答

11

因爲三元的兩個返回值不是同一類型 - 一個是int而另一個是string。編譯器無法推斷三元表達式的返回類型是什麼。

解決方案:從兩個分支中返回相同的類型,或將其中一個投射到另一個分支的基部。 object將會很好。

+0

我不能相信我錯過了。 – 2011-03-25 01:38:05

+0

@Nick:發生在我們身上。 – Jon 2011-03-25 01:38:40

5

因爲您試圖使三元運算符求值爲int(0)或字符串(id.ToString())。將0替換爲"0"

相關問題