类似哈希表的数据结构,带有额外的信息来标识首选/当前项

本文关键字:标识 信息 数据结构 哈希表 | 更新日期: 2023-09-27 18:07:26

c#中是否存在字典或哈希表或类似的结构,带有属性(如XML)或额外的数据块来指定哈希表中的一个特定项是首选/当前项?我想这样做:

Hashtable myHashtable = new Hashtable(); 
myHashtable.Add(key1, item1);
myHashtable.Add(key2, item2, true); // true = specify this item2 as the preferred/current
myHashtable.Add(key3, item3);

除了将这些首选/当前信息保存在项目中。

目前,我使用自己的结构如下,但仍然没有检查所有的极端情况:

public class HashtableWithCurrent : Hashtable
{
    String _currentKey = String.Empty;
    public void Add(object key, object value, bool current)
    {
        // TODO make sure key is a String
        //
        base.Add(key, value);
        //
        _currentKey = (String)key;
    }
    public override void Remove(object key)
    {
        base.Remove(key);
        // key also
        if (_currentKey == key)
            ClearCurrentKey();
    }
    public String CurrentKey
    {
        get
        {
            return _currentKey;
        }
    }
    public void ClearCurrentKey()
    {
        _currentKey = String.Empty; // via a function rather than a setter to avoid unwanted setting
    }
}

类似哈希表的数据结构,带有额外的信息来标识首选/当前项

你可以自己写,但我认为你不需要它。在使用Hashtable:

的类中只使用一个私有字段
class MyClass
{
    private object _currentKey;
    private Hashtable _myHashtable = new Hashtable(); 
    public void Method()
    {
        // ...
        _myHashtable.Add(key1, item1);
        _myHashtable.Add(key2, item2);
        _currentKey = key2;
        _myHashtable.Add(key3, item3);
    } 
}