您可以使用Dictionary<>.ContainsKey来检查密钥是否存在,因此您可以这样做:
if (dicThreatPurgeSummary.ContainsKey(Group))
{
if (dicThreatPurgeSummary[Group].ContainsKey(Month))
{
// dicThreatPurgeSummary[Group][Month] exists
}
}
请注意,使用二维键而不是级联两个字典可能会更好。这样,您无需在每次为第一级使用新键时都添加新字典,并且所有值都在同一个字典中,从而允许您迭代值或检查值是否存在。
您可以为此使用元组:
var dicThreatPurgeSummary = new Dictionary<Tuple<int, int>, int>();
dicThreatPurgeSummary.Add(new Tuple<int, int>(Group, Month), Count);
// accessing the value
int a = dicThreatPurgeSummary[new Tuple<int, int>(Group, Month)];
// checking for existance
if (dicThreatPurgeSummary.ContainsKey(new Tuple<int, int>(Group, Month)))
{
// ...
}
使用更漂亮的子类型
(未经测试)
class IntIntDict<T> : Dictionary<Tuple<int, int>, T>
{
public T this[int index1, int index2]
{ get { return this[new Tuple(index1, index2)]; } }
public bool ContainsKey (int index1, int index2)
{
return ContainsKey(new Tuple(index1, index2));
}
public void Add (int index1, int index2, T value)
{
Add(new Tuple(index1, index2), value);
}
// ...
}
然后你可以像这样使用它:
var dicThreatPurgeSummary = new IntIntDict<int>();
dicThreatPurgeSummary.Add(Group, Month, Count);
// accessing the value
int a = dicThreatPurgeSummary[Group, Month];
// checking for existance
if (dicThreatPurgeSummary.ContainsKey(Group, Month))
{
// ...
}