C#List + Object引用未设置为对象的实例

时间:2010-06-21 11:06:55

标签: c#

我在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类型的列表。

3 个答案:

答案 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。