数组NullReference异常

时间:2014-01-15 01:35:03

标签: c# arrays

代码是德语,但并不复杂。我正在创建一个员工阵列,最后我必须总结所有月薪(德语中的“lohnkosten”)。

我得到的问题是NullReferenceException,因为我正在尝试拥有一个[10]数组,并且我只初始化了[6]个成员/员工。这是有目的的'因为我想要空“槽”来编写添加和删除该数组成员的方法。现在,当它试图添加所有成员的所有工资时,它会转到null(空)“插槽”,因此会抛出NullReferenceException

有没有办法对程序说“如果null点出现,忽略它/跳过它并完成剩下的工作。”我必须提前说,我不能使用List;它会更容易,但不幸的是我不能。

mitarbeiter.Berechnung()是根据构造函数中第四个参数的小时数获取员工薪水的方法。

Mitarbeiter[] alleMit = new Mitarbeiter[10];
alleMit[0] = new Arbeiter("001689", "Jimmy Page", "Lange Gasse 6, 1060 Wien", 2005, 10.75, 325.90);
alleMit[1] = new Arbeiter("001055", "Michael Jäger", "Lerchenfelderstraße, 1070 Wien", 1998, 12.50, 489.60);
alleMit[2] = new Angestellter("03569", "Toni Montana", "Margaretenstrasse 68, 1040 Wien", 2008, 11.85);
alleMit[3] = new Angestellter("03521", "Ray Charles", "Friedensbrücke 2, 1180 Wien", 2000, 12.65);
alleMit[4] = new Manager("00112", "Sarah Schwack", "Wiedner Haupstrasse 25, 1040 Wien", 2009, 14.75, 624.14);
alleMit[5] = new CEO("001", "Robert Plant", "Am hof 7, 1010 Wien", 1997, 22.50, 1445.80);

double lohnKosten = 0;
foreach (Mitarbeiter mitarbeiter in alleMit)
{
    mitarbeiter.Drucken();
    lohnKosten += mitarbeiter.Berechnung();
}
Console.WriteLine("\nLOHNKOSTEN: " + lohnKosten + " euro");

2 个答案:

答案 0 :(得分:4)

您可以在循环之前使用LinQ删除null个条目。喜欢这个

foreach(Mitarbeiter mitarbeiter in alleMit.Where(x => x != null))
{
    mitarbeiter.Drucken();
    lohnKosten += mitarbeiter.Berechnung();
}

答案 1 :(得分:2)

只需使用if语句并检查null:

foreach(Mitarbeiter mitarbeiter in alleMit)
{
    if(mitarbeiter != null)
    {
       mitarbeiter.Drucken();
       lohnKosten += mitarbeiter.Berechnung();
    }

}
相关问题