我有一个课程,允许我按如下方式存储时间。
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的开始处,它带有下划线蓝色,表示该字段永远不会分配给任何内容,并且始终具有空值。
这个小问题让我疯狂,我只是完全错过了什么。请帮忙!
答案 0 :(得分:6)
您需要初始化该字段,否则其默认值为null,因为List<T>
是引用类型。
使用private List<LockTime> listOfTimes = new List<LockTime>();
答案 1 :(得分:4)
好像你没有分配列表对象。
可能会改变
private List<LockTime> listOfTimes;
为:
private List<LockTime> listOfTimes = new List<LockTime>();
答案 2 :(得分:2)
您声明了列表,但没有对其进行初始化,因此它当前指向null。
private List listOfTimes = new List();
答案 3 :(得分:2)
您声明但不初始化列表。因此,您尝试在基本上Add
的内容上致电null
。
答案 4 :(得分:2)
您尚未初始化列表。你看到警告的地方就是这样的,
private List<LockTime> listOfTimes = new List <LockTime>()