调用的数组对象设置为NULL,不设置为构造函数值

时间:2014-11-04 18:14:05

标签: c# nullreferenceexception

我有一个只有名称,ID,LastName的公共automatic properties of strings的类,而且我已经为它定义了一个构造函数,并将它们定义为string.Empty。 现在在代码中我创建了这个类的数组:

AlternateAddressSummary[] alternateAddressSummaries = new AlternateAddressSummary[6];
int adrsCounter = -1;
foreach (Addresses adrs in address_alternative)
{
    adrsCounter++;
    FillAlternateAddressSummaryObject(alternateAddressSummaries[adrsCounter], adrs);
}

FillAlternateAddressSummaryObject只是填充每个对象的属性,例如:

private void FillAlternateAddressSummaryObject(AlternateAddressSummary alA, Addresses adrs)
{
    alA.AlternateAdressLine1 = adrs.City;
    //...
}

但为什么我会在NULL上获得alA例外?即使我创建了这6个数组对象,它们也会被初始化为NULL。它们不应该被设置为我在constructor中所说的内容吗?

1 个答案:

答案 0 :(得分:3)

那是因为你没有实例化alternateAddressSummaries

的任何成员

你做的有点像这样做

AlternateAddressSummary1;
AlternateAddressSummary2;
AlternateAddressSummary3;
...

您已声明AlternateAddressSummary数组,但您实际上并未实例化其中任何一个。他们仍然是null


如果你这样做

for(int i=0; i<alternateAddressSummaries.Length; i++)
{
    alternateAddressSummaries[i]= new AlternateAddressSummary(/*params*/);
}

它们将被实例化,它们的值将是构造函数设置它们的值。