我需要在数组中找到最小值和最大值(不考虑该数组中可能的NaN值)。
这很容易只使用double
,但是这些 FindMin 和 FindMax 函数必须使用泛型类型。
我试图以这种方式测试通用NaN:
bool isNaN<T>(T value) where T : IEquatable<T>
{
return !value.Equals(value);
}
但是Equals
回来true
了double.NaN
??!!
我现在有这样的解决方法:
bool isNaN<T>(T value) where T : IEquatable<T>
{
var d = value as double?;
if (d.HasValue) { return double.IsNaN(d.Value); }
return !value.Equals(value);
}
我的问题更多是关于理解为什么第一个解决方案不起作用,这是一个错误吗?
你可以在这里找到小的测试代码