【问题标题】:C# get, set accessors in combination with array [system.null reference exception]C#获取、设置访问器结合数组【system.null引用异常】
【发布时间】:2014-05-03 17:13:07
【问题描述】:

我刚刚学习了访问器,遇到了一个问题,我想学习如何让它与数组一起工作,这是我的脚本

public Vak[] vakken = new Vak [5];

我用来创建访问器的类是下一个:

public class Vak
{
public string name {get; set;}
public string docent {get; set;}
public int uren {get; set;}
}

在我的按钮单击事件中,这就是我想通过这个命令设置它的方式,我不知道为什么它给了我空引用错误。

vakken[0].name = "Joe";

感谢您的帮助!

【问题讨论】:

标签: c# get set accessor


【解决方案1】:

这是因为你没有实例化你的类。当你创建 Vaks 数组时,在它之后创建一个 for 循环来实例化每个元素,如下所示:

for (int i = 0; i < vakken.Length; i++)
{
     vakken[i] = new Vak(); // this basically allocates memory for your object
}

您可以更改该数组中每个元素的每个属性的值。

为了澄清,使用 new 关键字调用构造函数,它基本上是在实例化类时执行的类似方法的代码块。在您的课程中,您没有定义构造函数。如果你这样做,编译器会创建一个默认的无参数构造函数,我使用它来创建数组中每个元素的实例。

【讨论】:

    【解决方案2】:

    你只初始化了数组,没有初始化数组的值。

    你还必须使用:

    vakken[0] = new Vak();
    

    也适用于所有其他元素(例如,您可以在循环中执行此操作)

    【讨论】:

      【解决方案3】:

      您初始化了array,但还没有初始化数组中的每个item。试试:

      vakken[0] = new Vak();
      vakken[0].name = "Joe";
      vakken[1] = new Vak();
      vakken[1].name = "Dave";
      //etc
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多