Maison > développement back-end > C++ > Comment implémenter un OrderedDictionary générique dans .NET 3.5 ?

Comment implémenter un OrderedDictionary générique dans .NET 3.5 ?

Mary-Kate Olsen
Libérer: 2024-12-31 11:17:10
original
286 Les gens l'ont consulté

How to Implement a Generic OrderedDictionary in .NET 3.5?

Implémentation d'un OrderedDictionary générique

Bien qu'une implémentation générique de OrderedDictionary ne soit pas disponible dans .NET 3.5, en créer une n'est pas trop complexe . Nous pouvons exploiter une KeyedCollection pour le stockage et implémenter diverses méthodes pour trier les éléments comme List fait, créant efficacement un hybride de IList et IDictionary. 🎜>Aide Classes

Tests
public interface IOrderedDictionary<TKey, TValue> : IDictionary<TKey, TValue>, IOrderedDictionary
{
    // ...
}
Copier après la connexion

Ces tests démontrent les différentes capacités du OrderedDictionary implémenté.

public class OrderedDictionary<TKey, TValue> : IOrderedDictionary<TKey, TValue>
{
    private KeyedCollection2<TKey, KeyValuePair<TKey, TValue>> _keyedCollection;
    
    // ...
}
Copier après la connexion

Conclusion

Bien que .NET ne puisse pas fournir un OrderedDictionary générique mise en œuvre, créer les vôtres avec ces ressources est une solution viable pour maintenir à la fois la vitesse de recherche basée sur les clés et l'ordre d'insertion.
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
{
    // ...
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal