La razón Double.NaN != Double.NaNes simple:
¿Esperas 0/0ser igual que Math.Sqrt(-3)? ¿Y lo mismo que Math.Sqrt(-7)?
Hay un error en C # en mi opinión donde Equals()no se anula para NaN.
Assert.IsTrue(Double.NaN != Double.NaN);
Assert.IsTrue(Double.NaN.Equals(Double.NaN));
Al mismo tiempo
Assert.IsTrue(Double.PositiveInfinity == Double.NegativeInfinity);
Assert.IsTrue(Double.PositiveInfinity.Equals(Double.PositiveInfinity));
Utilice funciones estáticas para Doubley Single, p. Ej.
Double.IsNaN(value) && Double.IsInfinity(value);
O más específico:
Double.IsPositiveInfinity(value);
Double.IsNegativeInfinity(value);