0 c# dictionary keynotfoundexception
我是一个业余程序员,这似乎是一个简单的问题需要解决,但我无法弄清楚如何.下面是C#代码,它不像我想要的那样.我希望这会返回3,而是抛出一个KeyNotFoundException.列表是相同的,所以不应该返回3?谢谢你的帮助.
Dictionary<object, double> dict = new Dictionary<object, double>();
dict.Add(new List<object>() { "a", "b" }, 3);
double output = dict[new List<object>() { "a", "b" }];
Run Code Online (Sandbox Code Playgroud)
List<T>是没有特殊Equals实现的引用类型.因此,在您的情况下,虽然两个列表实例具有相同的内容,但它们仍然是不同的实例,因此在键查找时不会被视为相等.
根据您的需要,您可以使用不同的解决方案:
如果列表中的项目总是相同,则可以使用元组:
Dictionary<Tuple<string, string>, double> dict =
new Dictionary<Tuple<string, string>, double>();
dict.Add(Tuple.Create("a", "b"), 3);
double output = dict[Tuple.Create("a", "b")];
Run Code Online (Sandbox Code Playgroud)如果项目数量不同,您可以创建自己的列表来比较其内容.