Memahami Susunan Kamus C# (atau Kekurangannya)
Ramai pembangun C# tersalah anggap bahawa elemen Dictionary
dikembalikan dalam susunan sisipan. Ini tidak betul. Contoh berikut menggambarkan ini:
<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>
Keluaran tidak dapat diramalkan kerana Dictionary
menggunakan jadual cincang, yang mengutamakan pencarian kunci yang cekap daripada mengekalkan susunan sisipan. Urutan lelaran tidak dijamin dan akan berbeza-beza.
Menguatkuasakan Susunan Abjad dengan SortedDictionary
Jika anda memerlukan elemen diisih mengikut abjad, gunakan SortedDictionary
sebaliknya. Kelas ini mengekalkan susunan yang diisih berdasarkan pembanding kekunci (lalai adalah mengikut abjad untuk rentetan).
<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>
Ini akan menghasilkan output disusun mengikut abjad secara konsisten. Perlu diingat bahawa SortedDictionary
mempunyai overhed prestasi berbanding Dictionary
, jadi gunakannya hanya apabila pesanan diperlukan.
Atas ialah kandungan terperinci Mengapa Kamus C# Tidak Menjamin Susunan Elemen dan Bagaimana Saya Boleh Memastikan Susunan Abjad?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!