1

我看到了一些这样的代码

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

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

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

3 回答 3

3

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

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

如果value是盒装的double?,它总是要么是盒装的,要么是null盒装的double

于 2012-11-08T14:08:51.257 回答
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) 都会使测试短路,这具有相同的结果。

于 2012-11-08T14:24:19.800 回答
0

Nullable<double>与 的类型不同double,但它的 nullDouble.Value 属性是双精度的。您包含的代码似乎表明它可以处理或

于 2012-11-08T14:11:50.020 回答