Dictionary<string, int> testdic = new Dictionary<string, int>();
testdic.Add("cat", 1);
testdic.Add("dog", 2);
testdic.Add("rat", 3);
testdic.Remove("cat");
testdic.Add("bob", 4);
사전을 채운 다음 첫 번째 요소를 제거하십시오. 그런 다음 새 요소를 추가하십시오. Bob은 끝 대신에 위치 1에 나타나므로 제거 된 항목을 기억하고 해당 메모리 공간을 다시 사용하는 것 같습니다.사전의 언급되지 않은 기능은 무엇입니까?
MSDN에서 볼 수 없기 때문에 어디서나 문서화되어 있으며, 마지막에 계속 추가 할 것이라고 생각하여 슬픔의 날을 초래했습니다.
키를 사용하여 데이터를 검색하기 위해 사전을 사용하기 때문에이 점을 강조하는 것이 중요하다고 느낍니다. 그것이 당신이 가지고있는 유일한 사용법입니다. 다른 것들이 필요하다면 (iterating하는 것과 같이) 아마도 다른 구조를 사용해야합니다. – Blindy
IMHO, Microsoft는 'Dictionary'의 열거 순서가 키가 삭제되지 않은 인스턴스 (및 인스턴스 만)에 대해 정의되어 있음을 문서화해야합니다. 제한된 사용 시나리오에서 그러한 보증을지지하는 것은 비용이 많이 들지 않지만, 사전이 역 직렬화 된 표현을 정의하기 위해 그 패턴과 일치하는 방식으로 사전에 코드를 실용적으로 만들 것이므로 사전을 역 직렬화하고 다시 재 배열함으로써 얻어지는 데이터 스트림이 원본과 일치합니다. – supercat