Heim > Backend-Entwicklung > C++ > Warum gibt es in .NET 3.5 kein generisches OrderedDictionary und wie kann ich eines implementieren?

Warum gibt es in .NET 3.5 kein generisches OrderedDictionary und wie kann ich eines implementieren?

Patricia Arquette
Freigeben: 2025-01-04 12:08:38
Original
296 Leute haben es durchsucht

Why Is There No Generic OrderedDictionary in .NET 3.5, and How Can I Implement One?

Sie können keine generische Implementierung von OrderedDictionary finden?

.NET 3.5 bietet keine generische Implementierung von OrderedDictionary (aus dem System.Collections.Specialized-Namespace).

Es gibt bekannte Implementierungen, die diese Funktionalität bereitstellen können, aber es ist unklar, warum diese Implementierung nicht enthalten ist sofort einsatzbereit und ob es in .NET 4.0 enthalten sein wird.

Implementieren Sie Ihr eigenes

Die Implementierung eines generischen OrderedDictionary ist nicht komplex, kann aber zeitaufwändig sein. Hier ist eine Lösung mit einer KeyedCollection für den internen Speicher:

public interface IOrderedDictionary<TKey, TValue> : IDictionary<TKey, TValue>, IOrderedDictionary {
    new TValue this[int index] { get; set; }
    new TValue this[TKey key] { get; set; }
    new int Count { get; }
    new ICollection<TKey> Keys { get; }
    new ICollection<TValue> Values { get; }
    new void Add(TKey key, TValue value);
    new void Clear();
    void Insert(int index, TKey key, TValue value);
    int IndexOf(TKey key);
    bool ContainsValue(TValue value);
    bool ContainsValue(TValue value, IEqualityComparer<TValue> comparer);
    new bool ContainsKey(TKey key);
    new IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator();
    new bool Remove(TKey key);
    new void RemoveAt(int index);
    new bool TryGetValue(TKey key, out TValue value);
    TValue GetValue(TKey key);
    void SetValue(TKey key, TValue value);
    KeyValuePair<TKey, TValue> GetItem(int index);
    void SetItem(int index, TValue value);
}
Nach dem Login kopieren
public class OrderedDictionary<TKey, TValue> : IOrderedDictionary<TKey, TValue> {

    private KeyedCollection2<TKey, KeyValuePair<TKey, TValue>> _keyedCollection;

    public TValue this[TKey key] {
        get {
            return GetValue(key);
        }
        set {
            SetValue(key, value);
        }
    }

    public TValue this[int index] {
        get {
            return GetItem(index).Value;
        }
        set {
            SetItem(index, value);
        }
    }
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum gibt es in .NET 3.5 kein generisches OrderedDictionary und wie kann ich eines implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage