2014-04-26 66 views
0

我有一個類允許我存儲時間如下。將值添加到列表中 - NullPointerException C#

class LockTime 
{ 

    public int Start { get; set; } 

    public int End {get; set; } 

    public LockTime (int start, int end) 
    { 
     Start = start; 
     End = end; 

    } 

} 

在另一類我宣佈這個對象的列表。

private List<LockTime> listOfTimes; 

我在這個第二類有一個方法,然後添加到此列表。

LockTime theTime = new LockTime((pickerTimeStart.Value.Hour + pickerTimeStart.Value.Minute), (pickerTimeEnd.Value.Hour + pickerTimeEnd.Value.Minute)); 

listOfTimes.Add(theTime); 

當它試圖添加到列表中時,它會引發NullPointerException。在調試器中,它在Time變量中顯示2個值。我不太明白爲什麼它說NullPointer。

另外,在我聲明listOfTimes的開始處,它被強調爲藍色,表示該字段永遠不會分配給任何內容,並且始終爲空值。

這個小小問題讓我瘋狂,我只是完全錯過了一些東西。請幫忙!

+2

你初始化了'listOfItems'嗎? 'listOfTimes =新列表();'? –

回答

6

您需要初始化該字段,否則其默認值爲空,因爲List<T>是引用類型。

使用private List<LockTime> listOfTimes = new List<LockTime>();

+0

可悲的是,我曾嘗試=新列表但我錯過了大括號。我已經浪費了將近2-3小時的時間,把頭髮拉出來。感謝您的快速響應。 – JARRRRG

+0

@Jagga如果你忘記了括號,你會得到一個錯誤,如「新的表達式需要(),[]或{}輸入後」。你對此不瞭解的是什麼? (不是對你的批評,我只是好奇你的想法是什麼意思,當你知道一門語言時很難理解別人怎麼誤解它。) –

+0

我一直在做...... =新列表(0,0);和東西。然後我開始將訪問者從私有公共更改爲公共。我基本上做了一些不必要的改變,因爲我不知道你可以說或者也許記得我需要大括號。出於某種原因,我的大腦繼續前進,構造函數需要2個整數。我不知道。 – JARRRRG

2

您申報的名單,但沒有初始化它,所以它目前指向空。

private list listOfTimes = new List();

2

您聲明但不初始化列表。所以你試圖在null上調用Add

4

似乎你沒有分配列表對象。

也許改變

private List<LockTime> listOfTimes; 

到:

private List<LockTime> listOfTimes = new List<LockTime>(); 
2

您還沒有初始化列表。你看到警告的地方做這樣的事情,

private List<LockTime> listOfTimes = new List <LockTime>()