Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan Generic OrderedDictionary dalam .NET 3.5?

Bagaimana untuk Melaksanakan Generic OrderedDictionary dalam .NET 3.5?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-31 11:17:10260semak imbas

How to Implement a Generic OrderedDictionary in .NET 3.5?

Melaksanakan Generic OrderedDictionary

Walaupun pelaksanaan generik OrderedDictionary mungkin tidak tersedia dalam .NET 3.5, mencipta satu tidaklah terlalu rumit . Kami boleh memanfaatkan KeyedCollection untuk penyimpanan dan melaksanakan pelbagai kaedah untuk mengisih item seperti List melakukannya, dengan berkesan mewujudkan gabungan IList dan IDictionary.

Antaramuka

public interface IOrderedDictionary<TKey, TValue> : IDictionary<TKey, TValue>, IOrderedDictionary
{
    // ...
}

Pelaksanaan

public class OrderedDictionary<TKey, TValue> : IOrderedDictionary<TKey, TValue>
{
    private KeyedCollection2<TKey, KeyValuePair<TKey, TValue>> _keyedCollection;
    
    // ...
}

Pembantu Kelas

public class KeyedCollection2<TKey, TItem> : KeyedCollection<TKey, TItem>
{
    private Func<TItem, TKey> _getKeyForItemDelegate;

    // ...
}

public class Comparer2<T> : Comparer<T>
{
    private readonly Comparison<T> _compareFunction;

    // ...
}

public class DictionaryEnumerator<TKey, TValue> : IDictionaryEnumerator, IDisposable
{
    // ...
}

Ujian

[TestClass]
public class OrderedDictionaryTests
{
    // ...
}

Ujian ini menunjukkan pelbagai keupayaan OrderedDictionary yang dilaksanakan.

Kesimpulan

Walaupun .NET mungkin tidak menyediakan generik Pelaksanaan OrderedDictionary, mencipta sendiri dengan sumber ini ialah penyelesaian yang berdaya maju untuk mengekalkan kedua-dua kelajuan carian berasaskan kunci dan susunan sisipan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Generic OrderedDictionary dalam .NET 3.5?. 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