我创建了一个类实体,我正在尝试使用数组填充其中一个属性,方法如下:
Usuario[] arrayusers = new Usuario[contador];
int i = 0;
foreach (DataRow dr in dt.Rows)
{
arrayusers[i].Celular = dr["CELULAR"].ToString();
i++;
}
它返回错误“对象引用未设置为对象的实例”。那是为什么?
我尝试将我创建的类更改为字符串数组并且它有效...
string[] stringx = new string[contador];
int i = 0;
foreach (DataRow dr in dt.Rows)
{
stringx[i] = dr["CELULAR"].ToString();
i++;
}
这是一篇IT术语论文!
答案 0 :(得分:8)
您只定义了一个数组arrayusers
,其所有元素都设置为null。您必须实例化每个数组项:
foreach (DataRow dr in dt.Rows)
{
arraysers[i] = new Usuario(); //<<<<<<<<<< here
arrayusers[i].Celular = dr["CELULAR"].ToString();
i++;
}
为什么它适用于字符串数组?
因为您没有访问该元素的任何属性/方法。而是在循环中为它分配一个新的字符串项。在进入循环之前它是null。尝试类似:
string[] stringx = new string[contador];
int i = 0;
foreach (DataRow dr in dt.Rows)
{
Console.WriteLine(stringx[i].Length); //<<<< Exception here
stringx[i] = dr["CELULAR"].ToString();
i++;
}
答案 1 :(得分:0)
您确定arrayusers
和dt.Rows
的大小相同吗?此外,在我分配之前,我没有看到您arrayusers[i]
初始化null
的位置。
应该是这样的:
Usario tmp = new Usario();
tmp.Celular = dr["CELULAR"].ToString();
arrayUsers[i] = tmp;