字典是否可以将数组作为键?

Gok*_*l E 3 c# dictionary

面对字典中的问题.数组是否可以成为价值的关键???

Dictionary<string[], int> di = new Dictionary<string[], int>();
di.Add(new string[]
{
    "1","2"
}, 1);

di.Add(new string[]
{
    "2","3"
}, 2);

MessageBox.Show(di[new string[] { "2", "3" }].ToString()); // Here KeyNotFoundException occurred.
Run Code Online (Sandbox Code Playgroud)

为什么例外?

Tim*_*ter 7

默认情况下,只会比较数组的引用,因此您必须这样做

  1. 提供定制IEqualityComparer<string[]>
  2. 使用Tuple<string, string>as键代替(因为你只有两个字符串)

这是一个类似问题的答案,展示了如何为Dictionary- 构造函数创建自定义比较器.