>백엔드 개발 >C++ >.NET 3.5에 일반 OrderedDictionary가 없는 이유는 무엇이며 어떻게 구현할 수 있습니까?

.NET 3.5에 일반 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가 없는 이유는 무엇이며 어떻게 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.