值类型的对象也是可空值类型?

时间:2012-11-08 14:05:20

标签: c# ivalueconverter

我看到了一些这样的代码

if(value == null || !(value is double || value is double?))
{
    return value;
}

如果value为double,则值为double?也应该是真的,因此我可以将代码更改为

if(value == null || !(value is double?))
{
    return value;
}

3 个答案:

答案 0 :(得分:3)

假设valueobject,您可以将代码更改为:

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)使测试短路,结果相同。