Heim >Backend-Entwicklung >C++ >Wie implementiert man ein generisches OrderedDictionary in .NET 3.5?

Wie implementiert man ein generisches OrderedDictionary in .NET 3.5?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-31 11:17:10259Durchsuche

How to Implement a Generic OrderedDictionary in .NET 3.5?

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 tut, wodurch effektiv eine Mischung aus IList und IDictionary entsteht.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn