Purpose-built post

Effective C# 을 읽고, 공부하려고 정리 한다.

Content

관련 링크

어떤 함정이 있는 것일까?

Collection 의 Key 로 GetHashCode() 값을 사용하게 될 경우, 해쉬값이 변경 안될 것이라는 생각(이건 함정 보다는 collection 사용법에 가깝다.)이 함정이다. 똑같은 예로, c++ std::map 을 사용 할 때, map의 Key는 const 이므로 변경이 안되게 막아 둔것을 알 수 있을 것이다.

함정에 빠지면 어떻게 되는가?

만약 Collection의 Key로 GetHashCode()를 사용 하고, Collection 에 밀어 넣은 후, GetHashCdoe()가 변경 되게 된다면, Collection에 밀어 넣은 객체를 다시는 찾을 수 없게 될 것이다.

예제코드를 줄 수 있는가?


a = 3; 과 a = 4; 에서 결과가 바뀌는 것을 볼 수 있을 것이다. 이것이 함정이다.

Digression

  • GetHashCode()를 재정의 하면 되긴 하는데, 재정의 할 때, 몇가지 규칙을 지켜야 한다. 이것 또한 귀찮다. 성능상 해쉬아니면 답이 안나올 때, 그때 다시 봐도 늦지 않을 것이다. 이번 항목에선 단지 이러한 함정에 주의 하자는 정도로 넘어가는게 좋겠다.


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기