我看到了一些这样的代码
if(value == null || !(value is double || value is double?))
{
return value;
}
如果value为double,则值为double?也应该是真的,因此我可以将代码更改为
if(value == null || !(value is double?))
{
return value;
}
答案 0 :(得分:3)
假设value
是object
,您可以将代码更改为:
if (value == null || !(value is double))
{
return value;
}
如果value
是框double?
,则它将始终为null
或装箱double
。
答案 1 :(得分:0)
Nullable<double>
与double
的类型不同,但它的nullDouble.Value属性是double。您包含的代码似乎表明它处理了或
答案 2 :(得分:0)
请注意,double?
确实是Nullable<double>
,您可以使用GetType
查看可以为空的数据类型的原始值类型。所以,记住同样的考试:
if (value == null || value.GetType() != typeof(double))
{
return value;
}
自:
double A = 1; // A.GetType() = System.Double
double? B = 1; // B.GetType() = System.Double
Nullable<double> C = 1; // C.GetType() = System.Double
所有假设第一个条件(value == null
)使测试短路,结果相同。