c# - 使用 operator[] 即时创建字典项

标签 c# dictionary operators

通常当你创建一个 Dictionary<Tkey, TValue>您必须首先通过在字典本身上调用 add 来添加 k/v 对。

我有一个 Dictionary<string, mycontainer>其中 mycontainer是其他对象的容器。我需要能够快速向 mycontainer 添加东西,所以我想也许我可以重载下标 operator[]创建一个 mycontainer即时如果它不存在然后允许我直接调用添加它,这样:

mydictionnary["SomeName"].Add(myobject);每次字典中不存在具有所述名称的容器时,无需明确地去创建 mycontainer。

我想知道这是个好主意还是我应该显式创建新的 mycontainer 对象?

最佳答案

你应该创建自己的类来包装 Dictionary<TKey, List<TItem>> .

索引器看起来像这样:

public List<TItem> this[TKey key] {
    get {
        List<TItem> retVal;
        if (!dict.TryGetValue(key, out retVal))
            dict.Add(key, (retVal = new List<TItem>(itemComparer)));
        return retVal;
    }
}

关于c# - 使用 operator[] 即时创建字典项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264794/

相关文章:

javascript - 在 JavaScript 比较中应该使用哪个等号运算符(== vs ===)?

javascript - 为什么扩展运算符将我的数组转换为数字

mongodb - MongoDB 中 $project、$filter 和 $match 之间的区别

c# - 获取给定日期的正确周数

c# - 唯一性在 NoSQL 世界中意味着什么,我如何处理 MongoDB 中的关系?

c++ - flex C++ 中的 map<char[], char[]> 无法编译

hash - 优化字数

python - 从嵌套字典列表中获取 Pandas 数据框

c# - 动态创建/加载用户控件只能工作一次!

c# - 快速创建和删除文件导致异常