据我所知,为字典添加值的方法如下。

    Dictionary<string, string> myDict = new Dictionary<string, string>(); 
 
    myDict.Add("a", "1"); 

如果我将“myDictDict”声明为下面的样式。
IDictionary<string, Dictionary<string, string>> myDictDict = new Dictionary<string, Dictionary<string, string>>(); 
 
myDictDict .Add("hello", "tom","cat"); ?// How to add value here. 

谢谢你。

请您参考如下方法:

正确的做法是这样的:

// myDictDict is Dictionary<string, Dictionary<string, string>> 
Dictionary<string, string> myDict; 
string key = "hello"; 
if (!myDictDict.TryGetValue(key, out myDict)) { 
    myDict = new Dictionary<string, string>(); 
    myDictDict.Add(key, myDict); 
} 
myDict.Add("tom", "cat"); 

这将提取与键对应的字典(在您的示例中为 hello)或在必要时创建它,然后将键/值对添加到该字典中。您甚至可以将其提取到扩展方法中。
static class Extensions { 
    public static void AddToNestedDictionary<TKey, TNestedDictionary, TNestedKey, TNestedValue>( 
        this IDictionary<TKey, TNestedDictionary> dictionary, 
        TKey key, 
        TNestedKey nestedKey, 
        TNestedValue nestedValue 
    ) where TNestedDictionary : IDictionary<TNestedKey, TNestedValue> { 
        dictionary.AddToNestedDictionary( 
            key, 
            nestedKey, 
            nestedValue, 
            () => (TNestedDictionary)(IDictionary<TNestedKey, TNestedValue>) 
                new Dictionary<TNestedKey, TNestedValue>()); 
    } 
 
    public static void AddToNestedDictionary<TKey, TNestedDictionary, TNestedKey, TNestedValue>( 
        this IDictionary<TKey, TNestedDictionary> dictionary, 
        TKey key, 
        TNestedKey nestedKey, 
        TNestedValue nestedValue, 
        Func<TNestedDictionary> provider 
    ) where TNestedDictionary : IDictionary<TNestedKey, TNestedValue> { 
        TNestedDictionary nested; 
        if (!dictionary.TryGetValue(key, out nested)) { 
            nested = provider(); 
            dictionary.Add(key, nested); 
        } 
        nested.Add(nestedKey, nestedValue); 
    } 
} 

我遗漏了防范 null输入以保持想法清晰。
用法:
myDictDict.AddToNestedDictionary( 
    "hello", 
    "tom", 
    "cat", 
    () => new Dictionary<string, string>() 
); 

或者
myDictDict.AddToNesteDictionary("hello", "tom", "cat"); 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!