ホームページ >バックエンド開発 >C++ >.NET 3.5 にジェネリック OrderedDictionary がないのはなぜですか?また、ジェネリック OrderedDictionary を実装するにはどうすればよいですか?

.NET 3.5 にジェネリック OrderedDictionary がないのはなぜですか?また、ジェネリック OrderedDictionary を実装するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-04 12:08:38258ブラウズ

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

OrderedDictionary の汎用実装が見つかりませんか?

.NET 3.5 には、(System.Collections.Specialized 名前空間からの) OrderedDictionary の汎用実装が提供されていません。

この機能を提供できる既知の実装はありますが、この実装がすぐに含まれない理由と、.NET 4.0 に含まれるかどうかは不明です。

独自の実装

汎用 OrderedDictionary の実装は複雑ではありません。しかし、時間がかかる可能性があります。内部ストレージに KeyedCollection を使用するソリューションは次のとおりです:

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);
}
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);
        }
    }

以上が.NET 3.5 にジェネリック OrderedDictionary がないのはなぜですか?また、ジェネリック OrderedDictionary を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。