Implementieren eines generischen OrderedDictionary
Während eine generische Implementierung von OrderedDictionary in .NET 3.5 möglicherweise nicht verfügbar ist, ist das Erstellen einer solchen nicht allzu komplex . Wir können eine KeyedCollection zur Speicherung nutzen und verschiedene Methoden zum Sortieren von Elementen wie List
Schnittstelle
public interface IOrderedDictionary<TKey, TValue> : IDictionary<TKey, TValue>, IOrderedDictionary { // ... }
Implementierung
public class OrderedDictionary<TKey, TValue> : IOrderedDictionary<TKey, TValue> { private KeyedCollection2<TKey, KeyValuePair<TKey, TValue>> _keyedCollection; // ... }
Helfer Klassen
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 { // ... }
Tests
[TestClass] public class OrderedDictionaryTests { // ... }
Diese Tests demonstrieren die verschiedenen Fähigkeiten des implementierten OrderedDictionary.
Fazit
Während .NET möglicherweise kein generisches OrderedDictionary bereitstellt Implementierung ist die Erstellung einer eigenen Lösung mit diesen Ressourcen eine praktikable Lösung, um sowohl die schlüsselbasierte Suchgeschwindigkeit als auch die Einfügereihenfolge beizubehalten.
Das obige ist der detaillierte Inhalt vonWie implementiert man ein generisches OrderedDictionary in .NET 3.5?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!