我知道还有一个类似的问题:What's the difference between struct and class in .NET?
但是我的情况更适合我的情况,因此,如果能得到答复,我将不胜感激。 我有一个代表某种类型的类,当我尝试设置此类值的数组时,它会抛出null引用异常,但是当我使用结构时,它不会。由于其他限制,我需要使用一个类,该如何实现呢?
简而言之,我的C#代码:
public class Person
{
public string name;
public string imageLocation;
public string location;
public Person()
{
name = "";
imageLocation= "";
location = "";
}
}
在同一命名空间中的另一个类中:
int i = 0;
Person[] people = new people[applicablePeople];
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read() && i < applicablePeople)
{
people[i].name= dr["Name"].ToString();
people[i].imageLocation= dr["ImageLocation"].ToString();
people[i].location = dr["Location "].ToString();
i++;
}
}
提前thnx
答案 0 :(得分:2)
在您的示例中,people[i]
从未初始化。
区别是class的默认值为null
,而struct不能为null。您的默认struct Person
已分配。 class
只是指向null的指针,直到您对其进行初始化。
您需要做
while (dr.Read() && i < applicablePeople)
{
people[i] = new Person()
// ...