해시테이블 | 딕셔너리 |
Key, Value 모두 자료형을 지정할 필요 없다. | Key, Value 모두 자료형을 지정해야 한다. |
박싱-언박싱 을 사용한다. | 박싱-언박싱 을 사용하지 않는다. |
해시 테이블의 박싱-언박싱 과정에서 데이터가 값 복사가 일어날 것이라 생각했는데, 참조가 보호된다.
var list = new List<int>();
list.Add(1);
Console.WriteLine(JsonSerializer.Serialize(list));
var hashTable = new Hashtable();
hashTable.Add(1, list);
var listInHash = hashTable[1];
var convertedListInHash = (List<int>)listInHash;
convertedListInHash.Add(2);
Console.WriteLine(JsonSerializer.Serialize(list));
Console.WriteLine(JsonSerializer.Serialize(convertedListInHash));
박싱 언박싱에 대한 이해가 부족한 것 같다
- 공부 자료1 : https://tsyang.tistory.com/10
- 공부 자료2 : https://tsyang.tistory.com/6
박싱이나 언박싱을 한다고 해서 참조가 해제되지는 않는 것 같다.
'Server > C#' 카테고리의 다른 글
SemaphoreSlim (1) | 2024.01.02 |
---|---|
맨날 헷갈리는 상속 오버라이딩 정리 (0) | 2024.01.02 |
진짜 오랫동안 삽질했던, 프로그램 비정상 종료 대처법 (0) | 2023.10.11 |
C#의 장점 (2) | 2023.08.03 |
정확하게 코딩했는지 확인하자! 나의 프로그램 테스트 방법 (0) | 2023.07.18 |