奇怪的NullReferenceException,我似乎无法理解
问题描述:
好吧,让我来解释一下:奇怪的NullReferenceException,我似乎无法理解
我想编写一个保存/载入保存使用SQLite与Unity系统,并且我在添加一个问题加载数据到其各自的列表。
问题是,如果我在该方法之外调用此代码,它的工作原理。但是我需要它在数据加载时运行。
void AddPaso(string danceName)
{
for (int i = 0; i < loadedDances.Count; i++)
{
if (loadedDances[i].danzaName == danceName)
{
try
{
Debug.Log(loadedDances.Count);
loadedDances[i].pasos.Add(paso);
}
catch (Exception ex)
{
Debug.Log(ex.Message);
}
}
}
}
如果我不通过所有的列表和我添加使用loadedDances [0]而不是[I]它的工作数据。但我似乎不明白为什么,因为如果我在控制台上打印loadedDances.Count,它实际上表示它大于0.
为什么这不起作用?
答
显然loadedDances [i] .paso为空。
您应将其更改为:
void AddPaso(string danceName)
{
for (int i = 0; i < loadedDances.Count; i++)
{
if (loadedDances[i].danzaName == danceName)
{
try
{
Debug.Log(loadedDances.Count);
if(loadedDances[i].pasos!=null)
{
loadedDances[i].pasos.Add(paso);
}
else
{
Debug.Log ("loadedDances["+i+"].pasos is not set correctly");
}
}
catch (Exception ex)
{
Debug.Log(ex.Message);
}
}
}
}
+0
这确实是个问题,@Rudolfwm也是对的,我修好了,非常感谢! – 2014-08-31 14:52:43
非常感谢您为保持异常(尤其是行号)秘密。 – 2014-08-31 14:27:36
因为loadedDances [i] .pasos == null - >它没有引用现有的List。您可能只能正确设置阵列中的第一个。 – Rudolfwm 2014-08-31 14:42:05
糟糕,给出NullReferenceException的那一行是loadedDances [i] .pasos.Add(paso);这可能是沮丧,是什么让我忘记详细说明这一点:( – 2014-08-31 14:45:40