【问题标题】:List elements are null just after adding them [duplicate]列表元素在添加后为空[重复]
【发布时间】:2017-10-22 14:59:39
【问题描述】:

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

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...有人可以帮我吗?

【问题讨论】:

  • 这就是你确定的全部?在 if 语句和调试之间没有多余的行吗?我之所以问,是因为您在 if 之后不使用 {},如果您在两者之间有额外的一行,它将被跳过,并且无论检查结果如何,您的调试都会被打印出来。
  • 这些行之间没有任何内容,除了一些创建其他列表的说明。

标签: c# arrays list unity3d


【解决方案1】:

正如我们在this example 上看到的,您的代码运行良好。这意味着您提供的代码没有您所说的错误。

最肯定发生的是@Everts 在 cmets 中谈到的内容,您的Debug.LogError("tanks[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"); 
}

【讨论】:

  • 我认为这可能是 Unity 问题。我知道代码应该可以工作,但还是不行。
  • 你能告诉我们整个功能吗?直接从您的 IDE 复制/粘贴?我无法相信 unity 以及它使用的任何编译器都可能在像空检查这样简单的事情上失败......
  • 其实我把函数中除了那4行之外的所有东西都注释了,现在错误更奇怪了——它表明列表是一个空引用,尽管它是在之前的行中创建的。跨度>
  • 呃……越来越奇怪了-_-你能给我们截图吗?你的代码听起来很有趣 ;-)
  • 当然,我会尽快上传并在那里发帖
【解决方案2】:

对于可能遇到相同问题的人:不允许使用 ,,new" 关键字创建 Monobehaviours,这会导致错误。只需启用您的警告 ;)

【讨论】:

  • 这就是为什么也有必要发布你的课程。阅读副本了解更多信息
猜你喜欢
  • 2013-10-31
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 2015-10-02
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
相关资源
最近更新 更多