C#词典-词典中不存在给定的键

用户名

我目前正在尝试将Tiled(平铺的地图编辑器)地图文件中的游戏对象加载到我在C#中制作的游戏引擎中。我正在使用TiledSharp(在此处链接到github )。它使用字典来保存我要加载的每个单独图块(或“游戏对象”)的属性。但是由于某种原因,当我遍历属性时会收到错误消息,并且如果我检查它是否为null也会收到错误消息

这是我正在使用的代码的片段:

for (int l = 0; l < tmxMap.Tilesets[k].Tiles.Count; l++)
    // This line throws an error
    if (tmxMap.Tilesets[k].Tiles[l].Properties != null)
        // and if I remove the above line, this line throws an error
        for (int m = 0; m < tmxMap.Tilesets[k].Tiles[l].Properties.Count; m++)

我得到的错误是字典中不存在给定的键。但是...我什至都不在寻找钥匙。

我想念什么吗?

任何帮助,将不胜感激。

编码义

我得到的错误是字典中不存在给定的键。但是...我什至都不在寻找钥匙。

是的,您正在检查密钥。这是您的代码:

if (tmxMap.Tilesets[k].Tiles[l].Properties != null)

您正在Tilesets使用keyk检查Tiles然后通过key检查l如果Tilesets中不包含带有key的项目k,则会出现该错误。Tileskey也是如此l

使用字典时,您可以执行以下操作:

选项1

查找执行两次:一次查看项目是否存在,然后第二次获取值:

var items = new Dictionary<string, string>();
items.Add("OneKey", "OneValue");
if(items.ContainsKey("OneKey"))
{
    var val = items["OneKey"];
}

选项2

这是另一种查找一次的方法:

string tryVal;
if (items.TryGetValue("OneKey", out tryVal))
{
    // item with key exists so you can use the tryVal
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章