2015-10-20 66 views
0

如何在構造函數中分配這個只讀變量。如何將stringcomparer添加到c#中的嵌套字典?

private readonly Dictionary<string, Dictionary<string, int>> nCount = new Dictionary<string, Dictionary<string, int>>(); 

要在構造函數初始化這個變量:

public mclass() { 

     nCount = new Dictionary<string, Dictionary<string, int>>(); 

    } 
在初始化時需要

到stringComparer添加到內Dictornary

+1

http://stackoverflow.com/questions/13988643/case-insensitive-dictionary-with-string-key-type-in​​-c-sharp ?? – Ric

+0

如果沒有主字典中的項目,則無法初始化內部字典。所以當你添加項目時,你初始化值的字典。 –

回答

0

您必須初始化外一個呼叫中的每個字典構造函數超載爲IEqualityComparer

nCount = new Dictionary<string, Dictionary<string, int>> 
{ 
    { "myKey", new Dictionary<string, int>(..., myEqualityComparer) }  
}; 

但是,大多數情況下,您不需要在構造函數中完全初始化字典。簡單地聲明它並稍後添加其成員可能就足夠了。

0

如果沒有主詞典中的項目,則無法初始化內部詞典。因此,當您添加項目時,通過將StringComparer傳遞給constructor來初始化字典。

例如:

public mclass() 
{ 
    nCount = new Dictionary<string, Dictionary<string, int>>(); 
    var innerDict1 = new Dictionary<string, int>(StringComparer.InvariantCultureIgnoreCase); 
    innerDict1.Add("Foo", 1); 
    nCount.Add("Bah", innerDict1); 
}