问题描述
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.
但是密钥被打印在for循环中。我不明白。
这就是我初始化的方式
public Dictionary<String,EngineProperty> propertyDict = new Dictionary<String,EngineProperty>();
我尝试用String
用string
替换所有内容,但仍然行不通。
我该怎么办?
解决方法
正如乔恩·斯基特(Jon Skeet)在评论中说的那样,这个问题似乎是多余的空间。如果查看字符串System.String : Piston
的第一部分,冒号和活塞之间有3个空格,但是您只在分隔符中放了一个空格。这意味着活塞的开头有2个空格。同样,活塞后面有3,因此表示实际字符串为 Piston
。对于mainText
,根据您发布的字符串,您在活塞之前有类似的3个空格,但在之后没有类似的空格。这会使mainText
成为 Piston
,这不匹配。