2016-02-12 52 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