通常在创建Dictionary<Tkey, TValue>
时,您必须首先通过在字典本身上调用add来添加k / v对。
我有一个Dictionary<string, mycontainer>
,其中mycontainer
是其他对象的容器。我需要能够快速地向mycontainer添加内容,所以我想也许我可以重载下标operator[]
来动态创建mycontainer
如果它还不存在然后允许我调用直接添加,如:
mydictionnary["SomeName"].Add(myobject);
无需显式创建mycontainer。
我想知道这是一个好主意还是我应该明确创建新的mycontainer对象?
答案 0 :(得分:5)
你应该创建自己的包裹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;
}
}
答案 1 :(得分:1)
不妨myCustomClass.Add( key, subkey, value );
这样可以很容易地理解代码,智能感知将指导它的使用。
答案 2 :(得分:0)
我会选择明确的代码 - 隐式重载索引器并不是一种常见的情况,并且可能会在几个月后咬人,其他人将会阅读您的代码。