2014-08-31 114 views
-1

好吧,讓我來解釋一下:奇怪的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.

爲什麼這不起作用?

+0

非常感謝您爲保持異常(尤其是行號)祕密。 – 2014-08-31 14:27:36

+0

因爲loadedDances [i] .pasos == null - >它沒有引用現有的List。您可能只能正確設置陣列中的第一個。 – Rudolfwm 2014-08-31 14:42:05

+0

糟糕,給出NullReferenceException的那一行是loadedDances [i] .pasos.Add(paso);這可能是沮喪,是什麼讓我忘記詳細說明這一點:( – 2014-08-31 14:45:40

回答

1

顯然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