>백엔드 개발 >C++ >C# 사전이 요소 순서를 보장하지 않는 이유는 무엇이며 알파벳 순서를 어떻게 보장할 수 있습니까?

C# 사전이 요소 순서를 보장하지 않는 이유는 무엇이며 알파벳 순서를 어떻게 보장할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-17 19:01:10380검색

Why Doesn't C# Dictionary Guarantee Element Order, and How Can I Ensure Alphabetical Ordering?

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>

이렇게 하면 일관되게 알파벳순으로 정렬된 출력이 생성됩니다. SortedDictionaryDictionary에 비해 성능 오버헤드가 있으니 주의하세요. 순서가 꼭 필요한 경우에만 사용하세요.

위 내용은 C# 사전이 요소 순서를 보장하지 않는 이유는 무엇이며 알파벳 순서를 어떻게 보장할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.