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()를 재정의 하면 되긴 하는데, 재정의 할 때, 몇가지 규칙을 지켜야 한다. 이것 또한 귀찮다. 성능상 해쉬아니면 답이 안나올 때, 그때 다시 봐도 늦지 않을 것이다. 이번 항목에선 단지 이러한 함정에 주의 하자는 정도로 넘어가는게 좋겠다.
'책 정리 > Effective C#' 카테고리의 다른 글
item 15, 자원해제를 위해서 using과 try/finally를 이용해라 (0) | 2010.07.03 |
---|---|
item 14, 연쇄적인 생성자 호출을 이용하라. (4) | 2010.07.02 |
item 13, static 클래스 멤버는 static 생성자를 사용하여 초기화 하라. (0) | 2010.07.01 |
item 12, 할당문보다는 변수 초기화를 사용하는 편이 더 좋다 (0) | 2010.06.30 |
item 11, foreach 루프가 더 좋다. (0) | 2010.06.29 |
item 9, ReferenceEquals(), static Equals(), instance Equals(), operator==의 상호 연관성을 이해해라. (0) | 2010.06.26 |
item 8, value 타입을 사용할 때 0이라는 값이 의미를 가질 수 있도록 하라 (0) | 2010.06.24 |
item 7, immutable atomic value 타입이 더 좋다 (0) | 2010.06.23 |
item 6, value 타입과 reference 타입을 구분하라. (0) | 2010.06.20 |
Item 5, 항상 ToString()을 작성하라. (0) | 2010.06.11 |
최근댓글