C#中struct和class之间的变量初始化区别是什么?

时间:2019-04-15 16:50:42

标签: c# asp.net .net class struct

我知道还有一个类似的问题: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

1 个答案:

答案 0 :(得分:2)

在您的示例中,people[i]从未初始化。

区别是class的默认值为null,而struct不能为null。您的默认struct Person已分配。 class只是指向null的指针,直到您对其进行初始化。

您需要做

while (dr.Read() && i < applicablePeople)
{
    people[i] = new Person()
    // ...