2016-02-12 56 views
2

我想添加一個對象到可運算的nullable double List列表中,但如果我只給Convert.ToDouble(obj),那麼我將得到0而不是null.So我已經使用了合併運算符。但是我不能添加對象進入列表。如何在運行時將對象轉換爲可爲空的對象?

 IList<double?> list = new List<double?>(); 
     int a = 10; 
     object b=null; 
     list.Add(2); 
     list.Add(b ??Convert.ToDouble(b)); 
     list.Add(Convert.ToDouble(a)); 
     list.Add(null); 
+0

如果你想在null爲空時顯示null,你絕對不想使用null合併。如果不是,請詳細解釋一下 –

+0

那麼如何在使用像反射這樣的概念的情況下在大型項目中實現上述場景? – Dev

+0

反射是如何產生的?它與使用合併操作符錯誤無關,或者使用可空值 –

回答

1

您可以將對象轉換爲可爲空的double將其添加到可爲null的雙列表中。

list.Add((double?)b); 
+0

在使用反射在運行時轉換值時不會影響性能? – Dev

+1

這是一個正確的答案。在將可空的裝箱到一個對象之後,只有如Adil上面提到的那樣,才能重新獲得它的類型信息,並將其恢復爲Nullable 。 你真的沒有選擇,類型轉換會以某種方式發生。如果你想避免類型轉換,如果可能的話,避免強制轉換爲反對類型可能會更好。 – aiodintsov

+0

你是什麼意思反思?如果您在詢問演員表,那麼您必須將該對象轉換爲可空對象,並且在特定情況下無法避免。 – Adil