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();

5 项从 foreach 循环中打印出来。下面的代码就是其中之一

System.String :   Piston   System.String   Piston

Piston 是我要找的钥匙

但是就在for循环下面,

当我使用这个

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

我收到这个错误

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

但是在 for 循环中打印了密钥。没看懂。
这就是我初始化的方式

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

我已经尝试用 String 替换所有内容 string,但还是不行。

我该怎么办?

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