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
Lepaskan: 2025-01-08 19:11:53
asal
448 orang telah melayarinya

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:

public struct Tuple<T1, T2>
{
    public readonly T1 Item1;
    public readonly T2 Item2;
    public Tuple(T1 item1, T2 item2) { Item1 = item1; Item2 = item2; }
}
Salin selepas log masuk

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:

sealed class MyValueObject : ValueObject<MyValueObject>
{
    public DayOfWeek day;
    public string NamedPart;
}
Salin selepas log masuk

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 Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan