2011-03-25 2 views
0

가능한 중복 :
What's the difference between IEquatable and just overriding Object.Equals() ?Equals() IEquatable 서로 어떻게 관련되어 있습니까?

내가 C#의 모든 클래스는 객체와 객체에서 deived 것을 알고는 Equals()라는 가상 메소드가 있습니다.

IEquatable을 왜 사용해야합니까? object.Equals을 무시하지 않으시겠습니까? 개체의 같음이 정의하는 동안

+2

[IEquatable과 Object.Equals()를 어떻게 오버라이드합니까?] (http://stackoverflow.com/questions/2734914/whats-the-difference-between-equatable-and)와 동일합니다. -just-overriding-object-equals). –

답변

3

IEquatable<T>

bool Equals(T other) 

을 정의

bool Equals(object other) 

그래서 정의 IEquatable 당신이 캐스팅 할 필요없이 동일한 클래스의 두 항목의 쉬운 비교를하실 수 있습니다 클래스 현재 유형. 당신은 사람들이 IEquatable을 구현하고 개체의를 오버라이드 (override) 볼 많은 시간 IEquatable의 같 전화 같음 :

public class SomeClass : IEquatable<SomeClass> 
{ 
    public bool Equals(SomeClass other) 
    { 
     // actual compare 
    } 

    public override bool Equals(object other) 
    { 
     // cross-call to IEquatable's equals. 
     return Equals(other as SomeClass); 
    } 
} 

또한, 당신은뿐만 아니라 다른 종류의 평등을 정의 할 수 있습니다. Like Fraction 구현 IEquatable 구현

+0

@ Andrew : Hah, another Hare? 우리가 조상의 어느 곳과도 관련이 있는지 궁금해 ... –

+0

아주 멋지다! 내 중간 이름은 마이클뿐입니다 - 작은 세계 :) –

+0

@Andrew : Very nice! –

관련 문제