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
,这不匹配。
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
,这不匹配。