2012-01-12 26 views
2

我爲我的數據庫創建一個對象,我發現了一個奇怪的東西,我不明白:爲什麼?:操作員不能使用可空<int>賦值?

我有一個對象應該引用一個「語言」的ID,但這可以爲空,所以我的財產是int?(Nullable<int>)

所以,首先我試圖使用對象初始化:

myObject = new MyObject() 
{ 
    myNullableProperty = language == null ? null : language.id; 
} 

,但它不工作!它告訴我null無法轉換爲int

但是如果我在if/else結構中,我可以將null置於var然後將其分配給我的屬性。

這是爲什麼這樣表演?

+1

由於語法錯誤,您的代碼無法編譯 - 如果是複製/粘貼錯誤,請通過編輯進行更正。 – 2012-01-12 08:46:28

回答

9

您可以嘗試鑄造nullint??:運營商既需要操作數返還相同種類:

myNullableProperty = language == null ? (int?)null : language.id 
+0

你也可以用冒號(或者提起或者包裹)冒號中的另一個「side」,就像這樣:'language == null? null:(int?)language.id'。 – 2012-05-19 11:34:20

0

這是因爲類型不匹配。您必須將您的空值轉換爲int類型。

0

的原因是,使用?操作左,:的右側時需要是由相同類型和typeof(null)!=typeof(int)這樣:

myNullableProperty = language == null ? (int?)null : language.id; 
0

最有可能的零被解釋爲這顯然不能被分配噸對象int int。您可能想要使用myNullableProperty = language == null ? (int?)null : language.id;

+0

好的,但爲什麼如果我在if(language == null){languageId = null;}其他{...}工作? – J4N 2012-01-12 11:54:04

相關問題