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

String我已经尝试用替换所有内容string,但它仍然不起作用。

我该怎么办?

4

1 回答 1

2

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

于 2020-09-10T17:13:19.767 回答