开发者社区> 问答> 正文

通过数字索引访问Dictionary.Keys键

我正在使用,Dictionary<string, int>其中int是键的计数。

现在,我需要访问字典中最后插入的键,但是我不知道它的名称。显而易见的尝试:

int LastCount = mydict[mydict.keys[mydict.keys.Count]];

不起作用,因为Dictionary.Keys未实现[] -indexer。

我只是想知道是否有类似的课程?我考虑过使用堆栈,但是只存储一个字符串。我现在可以创建自己的结构,然后使用Stack ,但是我想知道是否还有另一种选择,本质上是在Keys上实现[] -indexer的Dictionary?

展开
收起
游客ufivfoddcd53c 2020-01-03 16:06:25 811 0
1 条回答
写回答
取消 提交回答
  • 字典是哈希表,因此您不知道插入顺序!

    如果您想知道最后插入的键,建议您将Dictionary扩展为包含LastKeyInserted值。

    例如:

    public MyDictionary<K, T> : IDictionary<K, T>
    {
        private IDictionary<K, T> _InnerDictionary;
    
        public K LastInsertedKey { get; set; }
    
        public MyDictionary()
        {
            _InnerDictionary = new Dictionary<K, T>();
        }
    
        #region Implementation of IDictionary
    
        public void Add(KeyValuePair<K, T> item)
        {
            _InnerDictionary.Add(item);
            LastInsertedKey = item.Key;
    
        }
    
        public void Add(K key, T value)
        {
            _InnerDictionary.Add(key, value);
            LastInsertedKey = key;
        }
    
        .... rest of IDictionary methods
    
        #endregion
    
    }
    
    

    但是,当您使用它.Remove()来解决此问题时会遇到问题,您将必须保留插入钥匙的有序列表。

    2020-01-03 16:07:12
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载