我在C#中有这个代码。 它返回“对象引用未设置为对象的实例”异常。
代码:
public decimal Calculate(String id)
{
decimal Total=0;
AmountDataDB getData=new AmountDataDB();
List<AmountData> d = new List<AmountData>();
d = getData.Amount_Details(id);
if (d.Capacity != 0)
{
foreach (AmountData temp in d)//NullReference exception occurs here
{
Total += temp.Amount;
}
}
return Total;
}
这里,AmountDataDB和AmountData是两个类。 Amount_Details返回AmountData类型的列表。
答案 0 :(得分:4)
非答案(建议):
请,请x100000,不要写代码如下:
List<AmountData> d = new List<AmountData>();
d = getData.Amount_Details(id);
创建新列表只是为了让它在下一行中被覆盖,这完全没有意义。
答案 1 :(得分:4)
您可以使用null-coalescing operator来确保d
变量永远不会为空:
List<AmountData> d = getData.Amount_Details(id) ?? new List<AmountData>();
答案 2 :(得分:1)
getData.Amount_Details(id);
返回null
,可能是因为该特定ID没有记录。如果没有记录,您可能应该更改Amount_Details()
的行为以返回空列表而不是null。