代码是德语,但并不复杂。我正在创建一个员工阵列,最后我必须总结所有月薪(德语中的“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");
答案 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();
}
}