C# C中struct和class的变量初始化有什么区别#
我知道有一个类似的问题: 但我的情况更具体,所以如果我能得到答案,我将不胜感激。 我有一个类来表示某种类型,当我试图设置这个类值的数组时,它会抛出null引用异常,但当我使用struct时,它不会。由于另一个限制,我需要使用一个类。我如何才能做到这一点 简而言之,我的c代码:C# C中struct和class的变量初始化有什么区别#,c#,asp.net,.net,class,struct,C#,Asp.net,.net,Class,Struct,我知道有一个类似的问题: 但我的情况更具体,所以如果我能得到答案,我将不胜感激。 我有一个类来表示某种类型,当我试图设置这个类值的数组时,它会抛出null引用异常,但当我使用struct时,它不会。由于另一个限制,我需要使用一个类。我如何才能做到这一点 简而言之,我的c代码: public class Person { public string name; public string imageLocation; public string location;
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++;
}
}
inti=0;
人员[]人员=新人员[适用人员];
使用(SqlDataReader dr=cmd.ExecuteReader())
{
while(dr.Read()&&i
thnx预先在您的示例中,
人员[i]
从未初始化
区别在于类的默认值为null
,而结构不能为null。您的默认struct Person
已分配。而类
在初始化之前只是指向null的指针
你需要做什么
while (dr.Read() && i < applicablePeople)
{
people[i] = new Person()
// ...
while(dr.Read()&&i
Person[]people=new people[applicatablepeople];
数组初始化时,还需要为数组中的每个项创建Person类的对象。对于struct,不需要创建/分配内存,因为它们是引用类型