gpt4 book ai didi

c# - 为什么在访问新数组的元素时得到 "object reference not set to instance of object"?

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:05 25 4
gpt4 key购买 nike

我有以下类(class)

public class alumno
{
public string nombre, matricula;
public int semestre;

public string []materias = new string [5];
public double[] calif = new double[5];
}

我需要创建一个数组,但在访问它时遇到错误。

static void Main(string[] args)
{
alumno[] als = new alumno[5];
alumno al = new alumno(); // here i dont have problem
al.nombre = "angel"; // here i dont have problem

als[0].nombre = "angel"; // but here i DO have problem
als[0].semestre = 6;
als[0].matricula = "123";
als[0].materias[0] = "español";
als[0].calif[0] = 10;
}

我收到的错误是“Referencia a objeto no establecida como instancia de un objeto”,其中英文意思是“对象引用未设置到对象的实例”

如何在数组中填充我的对象?

最佳答案

alumno[] als = new alumno[5]; 

这将创建一个包含 5 个元素的数组,但每个元素都必须被创建。

als[0] = new alumno();
// now you can access als[0].nombre

在访问其成员之前,您需要对数组中的每个元素执行此操作。

for (int index = 0; index < als.Length; index++)
{
als[index] = new alumno();
}

您遇到的问题正式称为 NullReferenceException。访问空引用的成员(属性、方法)是不合法的。创建数组时,数组中的每个元素都设置为该类型的默认值。对于类,默认值为 null,这就是您遇到问题的原因。


与您的直接问题无关,您在编写 C# 代码时应该注意一些事项。类名和类的公共(public)成员大写是惯例。

class Alumno
{
public string Nombre { get; set; }
}

这也突出了另一个约定:在 C# 中向公众公开成员字段(类级别变量)并不是惯用的。那些被隐藏起来。我们通过 C# 代码中的属性 公开数据(也有异常(exception),这些更多是您所说的指南,而不是实际规则)。

关于c# - 为什么在访问新数组的元素时得到 "object reference not set to instance of object"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7748687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com