首頁 >後端開發 >C++ >如何在 .NET 3.5 中實作通用 OrderedDictionary?

如何在 .NET 3.5 中實作通用 OrderedDictionary?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-31 11:17:10246瀏覽

How to Implement a Generic OrderedDictionary in .NET 3.5?

實作通用 OrderedDictionary

雖然 OrderedDictionary 的通用實作在 .NET 3.5 中可能不可用,但建立一個並不太複雜。我們可以利用 KeyedCollection 進行儲存並實作各種方法來對項目進行排序,例如 List 等。確實如此,有效地創建了 IList 和 IDictionary 的混合體。

介面

public interface IOrderedDictionary<TKey, TValue> : IDictionary<TKey, TValue>, IOrderedDictionary
{
    // ...
}

實作

public class OrderedDictionary<TKey, TValue> : IOrderedDictionary<TKey, TValue>
{
    private KeyedCollection2<TKey, KeyValuePair<TKey, TValue>> _keyedCollection;
    
    // ...
}

幫手類

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
{
    // ...
}

測試

[TestClass]
public class OrderedDictionaryTests
{
    // ...
}

這些測試示範了已實現的OrderedDictionary的各種功能。

結論

雖然.NET 可能不會提供通用的OrderedDictionary 實現,使用這些資源創建您自己的實現是維護基於鍵的查找速度和插入順序的可行解決方案。

以上是如何在 .NET 3.5 中實作通用 OrderedDictionary?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn