Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 等于()表示.NET中的双值。执行是否错误?_C#_Equals - Fatal编程技术网

C# 等于()表示.NET中的双值。执行是否错误?

C# 等于()表示.NET中的双值。执行是否错误?,c#,equals,C#,Equals,我一直认为“==”和Equals()对于双值给出相同的结果……但事实并非如此 范例 var a = Double.NaN; Console.WriteLine(a == a); Console.ReadKey(); 打印“假” “真的” 所以,为什么浮点数的Equals()方法实现不遵循浮点数规范,即如果数字是NaN-它不等于任何东西,甚至不等于它本身? 另外,我合并了我的问题,并将尽快删除关于NaN的另一个问题 p.p.S 等于实现(.NET 4,感谢Ani)

我一直认为“==”和Equals()对于双值给出相同的结果……但事实并非如此

范例

    var a = Double.NaN;

    Console.WriteLine(a == a);
    Console.ReadKey();
打印“假”

“真的”

所以,为什么浮点数的Equals()方法实现不遵循浮点数规范,即如果数字是NaN-它不等于任何东西,甚至不等于它本身?

另外,我合并了我的问题,并将尽快删除关于NaN的另一个问题

p.p.S 等于实现(.NET 4,感谢Ani)

    var a = Double.NaN;

    Console.WriteLine(a.Equals(a));
    Console.ReadKey();
public bool Equals(double obj)
{
    return ((obj == this) || (IsNaN(obj) && IsNaN(this)));
}