猿问

Dictionary.ContainsKey() 抛出 KeyNotFound 异常

我有一本充满列表的字典。在我向字典添加新键之前,我检查它是否已经在字典中。如果是这样,我将该对象添加到列表中。如果不是,我创建一个新对象并使用键将其添加到字典中。问题是 Dictionary.ContainsKey() 函数有时会抛出 KeyNotFound 异常,这对我来说毫无意义。


我试过使用 Dictionary.TryGetValue() 函数,它有同样的问题。我还确保密钥不为空。


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

}

奇怪的是,异常只发生在某些数据集上。


动漫人物
浏览 182回答 1
1回答

杨__羊羊

该程序将歌曲文件从一种节奏游戏转换为另一种节奏游戏。为此,我从一个 json 文件中读取数据并将其导出到另一个 json 文件。为此,我有一个类,每个类都包含所有相关信息,例如 json(反)序列化程序使用的难度。当我正在更新程序以支持更多困难时发生错误。我已经在导入端和将信息映射到导出类而不是导出类本身的代码中更改了困难。所以我写的难度键在导出类(名为 synthSong)中不存在。我错误地认为错误是由检查没有意义的关键变量引起的。我想这就是为什么“key”不是要用作键的变量的最佳名称的原因。
随时随地看视频慕课网APP
我要回答