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

本文关键字:设置 构造函数 NULL 数组 对象 调用 | 更新日期: 2023-09-27 18:29:00

我有一个类,它只有公共automatic properties of strings,如Name、ID、LastName,我还为它定义了一个构造函数,并将它们定义为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;
    //...
}

但是为什么我在alA上得到NULL异常?即使在创建这6个数组对象时,它们也被初始化为NULL。他们不应该按照我在constructor中所说的设置吗?

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

这是因为您没有实例化alternateAddressSummaries 的任何成员

你所做的有点像做

AlternateAddressSummary1;
AlternateAddressSummary2;
AlternateAddressSummary3;
...

您已经声明了AlternateAddressSummary数组,但实际上还没有实例化它们中的任何一个。他们仍然都是null


如果你做了这个

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

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