C# 仅在添加列表元素之后,列表元素为空

C# 仅在添加列表元素之后,列表元素为空,c#,arrays,list,unity3d,C#,Arrays,List,Unity3d,我的清单有一个不寻常的问题。代码如下所示: tanks = new List<Tank>(); tanks.Add(new Tank("Player", position1, false)); tanks.Add(new Tank("Enemy", position2, true)); if (tanks[0] == null) Debug.LogError("tanks[0] == null"); 由于某种原因,出现了错误。为什么会这样?如果我调用List.Count,它将返

我的清单有一个不寻常的问题。代码如下所示:

tanks = new List<Tank>();

tanks.Add(new Tank("Player", position1, false));
tanks.Add(new Tank("Enemy", position2, true));

if (tanks[0] == null) Debug.LogError("tanks[0] == null");
由于某种原因,出现了错误。为什么会这样?如果我调用List.Count,它将返回2。。。有人能帮我吗?

正如我们在您的代码中看到的那样,它工作得非常完美。这意味着您提供的代码没有您所说的错误

最明显的是@Everts在评论中提到的调试。LogErrortanks[0]==null;行可能不在代码中的if块内。尝试在其周围添加括号{}

这是您的更新代码

tanks = new List<Tank>();

tanks.Add(new Tank("Player", position1, false));
tanks.Add(new Tank("Enemy", position2, true));

if (tanks[0] == null) 
{
    Debug.LogError("tanks[0] == null"); 
}

对于可能有相同问题的人:不允许使用、、新建关键字创建单一行为,这将导致错误。只需启用您的警告

这就是你确定的全部了?在if语句和调试语句之间没有额外的一行吗?我之所以这样问是因为在if之后不使用{}如果中间有一行多余的代码,那么不管检查结果如何,都会跳过它并打印调试结果。这些代码行之间没有任何内容,除了一些创建其他列表的指令。我想这可能是统一性问题。我知道代码应该可以工作,但仍然不行。你能给我们展示一下整个函数吗?是否直接从IDE复制/粘贴?我不敢相信unity和它使用的任何编译器都会在像空检查这样简单的事情上失败…事实上,除了函数中的那4行之外,我对所有内容都进行了注释,错误现在更奇怪了-它表明列表是空引用,尽管它是在前面的行中创建的。嗯。。。越来越奇怪了-你能给我们截图吗?你的代码听起来很有趣-当然,我会尽快上传并张贴在那里,这就是为什么也有必要张贴你的课程。请阅读副本以了解更多信息