C# 해시테이블 vs 딕셔너리 [hashtable vs dictionary]

2022. 7. 4. 17:27C#/C#에 대한 다양한 공부

C#에서는 key와, value를 사용해서 자료를 저장하는 타입이 2가지가 있다. 해시테이블과 딕셔너리인데 사용법은 거의 동일하지만 내부적으로 처리하는 기술이 다르다. 

[해쉬테이블 (hashtable)]

  1. Non-Generic
  2. key와 value 모두 Object를 입력 받는다.
  3. 박싱/언박싱을 사용한다.
  4. 존재하지 않는 키를 찾으려고 하면 null을 반환한다.

즉, 제네릭을 이용하지 않고 Object를 사용하기 때문에 모든 데이터 타입을 다 받고 처리할 수 있는 장점이 있지만, 자료의 입력에 내부적으로 박싱이 일너라고 사용하는 곳에서도 다시 언박싱을 해줘야 사용이 가능하다.

[딕셔너리 (dictionary)]

  1. Generic
  2. key와 value 모두 선언시 타입을 입력해줘야한다.
  3. 박싱/안박싱이 일어나지 않는다.
  4. 존재하지 않는 키를 찾으려고 하면 예외가 발생한다.

딕셔너리를 선언시에 사용할 타입을 미리 설정하기 때문에 입력시나 출력시에도 박싱/언박싱이 일어나지 않는다. 따라서 입력과 사용에 용이하며, 외부에서도 이 타입을 사용할 때도 타입이 정의되어 있으니 다른 타입을 형변환을 시도하다가 실패할 염려가 없다.

[결론]

두가지 타입이 사용법은 비슷하지만 내부적인 처리와 수용하는 타입의 형태가 다르므로 필요에 따라서 선택을 해야한다. 고정적으로 하나의 타입만 입력받을 시에는 딕셔너리, value에 일정한 형식이 없고 여러 형태를 저장하려면 해시테이블을 사용하면 좋다.

'C# > C#에 대한 다양한 공부' 카테고리의 다른 글

C# GC(Garbage Collector) 가비지 컬렉터  (0) 2022.08.17
시작하세요 C# 9.0 프로그래밍  (0) 2022.07.06
dll, lib  (0) 2022.07.01
닷넷 프레임 워크 구조  (0) 2022.07.01
Static, 싱글톤  (0) 2022.07.01