当T = double时,从默认值(T)获取Double.NOTANUMBER,是否可能?

时间:2010-07-27 08:55:04

标签: c#

我的应用程序中的问题需要帮助。 在我的应用程序中,当我创建Default(T)并且我的泛型的类型是double时,我需要使用double.NotANumber。但我得到的是“0.0”。 它们是否能够获得我需要的价值????

2 个答案:

答案 0 :(得分:2)

我想知道用T=Nullable<double>来思考是否有助于你在这里处理;那么default(T)null(或者至少是null-ish)。仍然不完全NaN,但比0更近,并且它会自然延伸到所有值类型。

答案 1 :(得分:1)

没有。 default(double)将始终为0,并且您无法做任何改变。

你最接近的可能是编写一个单独的静态方法:

public static T GetDefaultValue<T>()
{
    return typeof(T) == typeof(double) ? (T)(object) double.NaN : default(T);
}

然后,您需要调用该方法,而不是使用default(T)。但这很糟糕:(