繁体   English   中英

Dictionary.ContainsKey()引发KeyNotFound异常

[英]Dictionary.ContainsKey() throws KeyNotFound Exception

我有一本充满清单的字典。 在向字典添加新键之前,请检查其是否已在字典中。 如果是这样,我将对象添加到列表中。 如果没有,我创建一个新对象,并用键将其添加到字典中。 问题是Dictionary.ContainsKey()函数有时会抛出KeyNotFound异常,这对我完全没有意义。

我试过使用具有相同问题的Dictionary.TryGetValue()函数。 我还确保密钥不为null。

string key = time.ToString();
Console.WriteLine(key);

if (!synthSong.Track[difficulty].ContainsKey(key))
{
  List<SynthNote> notes = new List<SynthNote>();
  notes.Add(note);
  synthSong.Track[difficulty].Add(key, notes);
}
else
{
  synthSong.Track[difficulty][key].Add(note);
}

奇怪的是,该例外仅发生在某些数据集上。

该程序将歌曲文件从一种节奏游戏转换为另一种节奏游戏。 为此,我从一个json文件中读取数据并将其导出到另一个json文件中。 为此,我有一个类,每个类包含所有相关信息,例如json(de)serializer使用的难度。 该错误发生在我正在更新程序以支持更多困难的过程中。 我已经改变了导入方面以及将信息映射到导出类而不是导出类本身的代码中的困难。 因此,我正在编写的难度键在导出类(名为synthSong)中不存在。 我错误地认为该错误是由检查键变量引起的,这本来是没有意义的。 我猜这就是为什么“键”不是要用作键的变量的最佳名称的原因。 另外,最好不要用所有难度键来初始化字典,而是在出现时创建它们,这可能是更好的样式。

暂无
暂无

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

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