繁体   English   中英

C#:KeyNotFoundException:字典中不存在给定的键

[英]C#: KeyNotFoundException: The given key was not present in the dictionary

foreach (KeyValuePair<String, EngineProperty> kvp in propertyDict)
{
    Debug.Log(kvp.Key.GetType()+" : "+ kvp.Key+ " "+ mainText.text.GetType()+ " "+ mainText.text);
}
slider.value = propertyDict[mainText.text].GetSpeed();

从 foreach 循环打印 5 个项目。 下面的代码是其中之一

System.String :   Piston   System.String   Piston

Piston是我要找的钥匙

但是在 for 循环的正下方,

当我使用这个

slider.value = propertyDict[mainText.text].GetSpeed();

我收到这个错误

KeyNotFoundException: The given key was not present in the dictionary.

但是 key 是在 for 循环中打印的。 我不明白。
这就是我初始化的方式

public Dictionary<String, EngineProperty> propertyDict = new Dictionary<String, EngineProperty>();

我曾尝试用一切替换Stringstring ,并且还在,这是行不通的。

我该怎么办?

正如 Jon Skeet 在他的评论中所说,这个问题看起来是额外的空间。 如果您查看字符串System.String : Piston的第一部分,冒号和 Piston 之间有 3 个空格,但您只在分隔符中放了一个空格。 这意味着活塞开头有 2 个空格。 同样,在 Piston 之后有 3 个,所以这意味着实际的字符串是Piston 对于mainText ,根据您发布的字符串,您在 Piston 之前有一个类似的 3 个空格,但之后没有。 这将使mainText成为Piston ,这不匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM