1

我在 c# 中有一个dictionary名字。Pair它包含一些键值对。我添加了一个屏幕截图,在 上生成了一个异常(p.Key == "left)Sequence containes no matching element但是如果您在 中看到,则Pair Dictionaryleft密钥存在于那里。那么请有人告诉我为什么会发生这个异常?

4

3 回答 3

4

如果我没看错的话,这个left值前面有一个空格" left",所以p.Key == "left"永远不会是真的。

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

于 2012-07-14T12:14:55.030 回答
1

您应该使用indexerTryGetValue而不是Single。使用 Single,没有理由使用字典。

此外,您的问题源于这样一个事实,即“左”之前有空格,因此整个字符串实际上是“左”。看看宽度是如何向左移动一个字符。

于 2012-07-14T12:16:16.900 回答
1

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

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

于 2012-07-14T12:18:06.690 回答