Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Kamus Berbilang Kunci dengan Cekap dalam C#?

Bagaimanakah Saya Boleh Melaksanakan Kamus Berbilang Kunci dengan Cekap dalam C#?

DDD
DDDasal
2025-01-08 19:11:53390semak imbas

How Can I Efficiently Implement a Multi-Key Dictionary in C#?

Kaedah pelaksanaan kamus berbilang kunci C#

Pustaka Kelas Pangkalan .NET (BCL) tidak mempunyai kamus berbilang kunci terbina dalam, tetapi terdapat beberapa pilihan sumber terbuka yang tersedia.

Gunakan tupel sebagai kunci

Pendekatan biasa ialah menggunakan tupel sebagai kunci. Walau bagaimanapun, kaedah ini mempunyai beberapa kelemahan:

  • Pelaksanaan GetHashCode lalai hanya mempertimbangkan medan pertama, yang membawa kepada potensi isu kebolehskalaan.
  • Nilai nol merumitkan perkara.

Struktur tupel tersuai

Untuk mengatasi batasan ini, anda boleh menentukan struktur tuple tersuai:

<code class="language-csharp">public struct Tuple<T1, T2>
{
    public readonly T1 Item1;
    public readonly T2 Item2;
    public Tuple(T1 item1, T2 item2) { Item1 = item1; Item2 = item2; }
}</code>

Ini memberikan kebolehubahan, kod cincang pra-pengiraan dan perbandingan kesamaan. Amalan terbaik ialah meletakkan medan yang paling membezakan dalam item pertama.

Pustaka ValueUtils melaksanakan algoritma pencincangan yang lebih baik

Pustaka ValueUtils menyediakan kaedah FieldwiseHasher.Hash, yang boleh mencipta kod cincang yang lebih dipercayai untuk struktur dan menyelesaikan masalah pelaksanaan GetHashCode yang lemah untuk tupel.

Objek nilai bernama meningkatkan kebolehbacaan

ValueUtils juga membenarkan penggunaan medan bernama dalam kunci berbilang medan, meningkatkan kebolehbacaan kod:

<code class="language-csharp">sealed class MyValueObject : ValueObject<MyValueObject>
{
    public DayOfWeek day;
    public string NamedPart;
}</code>

Dengan pendekatan ini, data dengan nilai semantik boleh mempunyai kedua-dua ahli bernama dan kod cincang yang betul sehingga sokongan asli untuk tupel bernama dengan kod cincang yang baik dilaksanakan dalam versi C# akan datang.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kamus Berbilang Kunci dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn