为什么发生这种异常?

时间:2012-07-14 12:12:10

标签: c# dictionary

我在c#中有一个dictionary名称Pair。它包含一些键 - 值对。我添加了一个屏幕截图,在(p.Key == "left)Sequence containes no matching element上生成了异常但如果您在Pair Dictionary中看到,那么left键就会出现。那么请有人告诉我为什么会发生这种异常?

3 个答案:

答案 0 :(得分:4)

如果我能看到它,则left值前面有一个空格" left",因此p.Key == "left"永远不会为真。

使用p.Key.contains("left")代替,或者在尝试操作之前检查它是否返回值。或修剪前导和尾随空格。

答案 1 :(得分:1)

您应该使用indexerTryGetValue代替Single。使用Single时,没有理由使用字典。

另外,你的问题源于这样一个事实,即'left'之前有空格,所以整个字符串实际上是“左”。看看宽度是左边的一个字符。

答案 2 :(得分:1)

如果它不是白色问题,那么我能做到的唯一方法就是字典是Dictionary<object,...>,在这种情况下,您使用的==引用相等,而不是字符串相等。这会导致它失败。如果是,请使用Dictionary<string,...>或使用Equals("left", p,Key)

请注意,Pair["left"]是一种更好的查找方式。