2012-09-07 2 views
0

프로젝트 (회사 코드)를 검사했을 때. 나는 이것을 보았다 :C#에서 Connection.GetHashCode가 사용되는 이유는 무엇입니까?

public override int GetHashCode() 
{ 
    unchecked 
    { 
     int result = 17; 
     result = result * 23 + ((connection != null) ? this.connection.GetHashCode() : 0); 
     return result; 
    } 
} 

나는 실제로 GetHashCode()를 처음 보았다. 나는 그것에 대해 조금 달렸다. 그러나 나는이 코드 라인과 연결에 왜 그것을 사용했는지 이해할 수 없다.

특별한 이유가 있습니까? 연결에 getHashCode를 사용하는 논리는 무엇입니까?

감사합니다.

+0

마법 번호의 목적은 무엇입니까? 완전히 무의미한 것처럼 보입니다. – Alex

+0

http://vkreynin.wordpress.com/2008/07/05/explaining-gethashcode-method/ –

답변

1

.

분명히 "연결"필드가 개체의 신원을 결정하는 데 중요합니다.

2

개체에 대해 빠르고 잘 분산 된 해시 키를 생성하는 좋은 방법을 알고 있다면 GetHashCode를 사용해야합니다.

사전에 개체를 저장하려는 경우 유용합니다. 더 나은 해싱은 이러한 데이터 구조에서 더 나은 효율성을 의미합니다.

그렇지 않으면 기본 GetHashCode()가 사용됩니다. 많은 경우에서 차선입니다. GetHasCode 오버라이드와 Equals 오버라이드를 함께 사용하는 것에 대한 몇 가지 세부 정보는 다음을 참조하십시오. (; 같은 해시 코드가 같은 인스턴스를 의미 할 수도 있고 다른 해시 코드 = 다른 인스턴스) GetHashCode 빠르게 두 인스턴스는 "동일한"로 표시할지 여부를 식별하는 데 사용할 수

http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx

관련 문제