2014-04-26 65 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>()