1

このようなコードを見ました

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

値が double の場合、値は double ですか? も真である必要があるため、コードを次のように変更できますか

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

3 に答える 3

3

が であると仮定するvalueobject、コードを次のように変更できます。

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

valueが boxedの場合double?、常にnullまたは boxed のいずれかになりますdouble

于 2012-11-08T14:08:51.257 に答える
0

Nullable<double>はと同じタイプではありませんがdouble、そのnullDouble.Valueプロパティはdoubleです。あなたが含めたコードは、それがまたは

于 2012-11-08T14:11:50.020 に答える
0

double?実際Nullable<double>にはであることを念頭に置いて、null 許容データ型で元の値の型を確認するために使用できます。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 に答える