직관적으로 "그들은 두 가지 복식이 아닙니다."만큼 쉽습니다.
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
public static bool Equals(object objA, object objB)
{
return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
}
2 개의 참조가 동일하지 아니하며, 그래서 Double.Equals
가 호출되는 null
입니다 : 당신이 깊이 가고 싶은 경우
그러나, Object.Equals
은 (당신이 당신의 두 번째 예제에 전화 정적 방법)이있다 사실상 :
public override bool Equals(object obj)
{
if (!(obj is double))
{
return false;
}
double d = (double) obj;
return ((d == this) || (IsNaN(d) && IsNaN(this)));
}
인수는 double
은 그래서 false
을 반환하지 않습니다.
이것은 .NET 4.0 64 비트 용 mscorlib
에서 가져온 것입니다.
"이중 값을 비교하려고합니다."- 그러나 당신은'decimal'과'int'를 비교합니다 –
@Henk : 저는 여러분의 생각을 따르지 않을 것입니다. 십진수는 어디에 있습니까? –
아니, 네 말이 맞아. 해당 m/d 접미사를 다시 트립합니다. –