C# 사전 순서 이해(또는 순서 부족)
많은 C# 개발자는 Dictionary
요소가 삽입 순서대로 반환된다고 잘못 가정합니다. 이것은 잘못된 것입니다. 다음 예에서는 이를 보여줍니다.
<code class="language-csharp">// Dictionary declaration private Dictionary<string, string> _Dictionary = new Dictionary<string, string>(); // Add elements _Dictionary.Add("orange", "1"); _Dictionary.Add("apple", "4"); _Dictionary.Add("cucumber", "6"); _Dictionary["banana"] = "7"; _Dictionary["pineapple"] = "7"; // Iterate and observe the order (non-deterministic) foreach (KeyValuePair<string, string> kvp in _Dictionary) { Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value)); }</code>
Dictionary
은 삽입 순서 유지보다 효율적인 키 조회를 우선시하는 해시 테이블을 사용하기 때문에 출력을 예측할 수 없습니다. 반복 순서는 보장되지 않으며 달라질 수 있습니다.
SortedDictionary로 알파벳 순서 적용
요소를 알파벳순으로 정렬해야 하는 경우 SortedDictionary
를 대신 사용하세요. 이 클래스는 키의 비교자를 기반으로 정렬된 순서를 유지합니다(기본값은 문자열의 알파벳순).
<code class="language-csharp">// SortedDictionary declaration private SortedDictionary<string, string> _SortedDictionary = new SortedDictionary<string, string>(); // Add elements _SortedDictionary.Add("orange", "1"); _SortedDictionary.Add("apple", "4"); _SortedDictionary.Add("cucumber", "6"); _SortedDictionary.Add("banana", "7"); _SortedDictionary.Add("pineapple", "7"); // Iterate and observe the alphabetical order foreach (KeyValuePair<string, string> kvp in _SortedDictionary) { Trace.Write(String.Format("{0}={1}", kvp.Key, kvp.Value)); }</code>
이렇게 하면 일관되게 알파벳순으로 정렬된 출력이 생성됩니다. SortedDictionary
은 Dictionary
에 비해 성능 오버헤드가 있으니 주의하세요. 순서가 꼭 필요한 경우에만 사용하세요.
위 내용은 C# 사전이 요소 순서를 보장하지 않는 이유는 무엇이며 알파벳 순서를 어떻게 보장할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!