C# 为什么我会得到;对象引用未设置为对象的实例;当访问新数组的元素时?
我有以下课程C# 为什么我会得到;对象引用未设置为对象的实例;当访问新数组的元素时?,c#,.net,arrays,C#,.net,Arrays,我有以下课程 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) { alu
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;
}
我收到的错误是“Referencea 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();
}
这还突出了另一个约定:在C#中,向公众公开成员字段(类级变量)并不是惯用做法。那些是隐藏的。我们通过C#代码中的属性公开数据(也有例外,这些是您所说的指导原则,而不是实际规则)。缺少什么
您有alumno类引用,但没有alumno类对象
alumno[0] = new alumno();
alumno[1] = new alumno();
alumno[2] = new alumno();
alumno[3] = new alumno();
alumno[4] = new alumno();
您创建的只是引用变量,而不是alumno对象。基本上,您正在创建一个空值数组,该数组能够容纳alumno类的5个实例 你想做的可能是
alumno[] als = new alumno[5];
//What You Need to Add
//VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
for (int i = 0; i < als.Length; i++)
{
als[i] = new alumno();
}
alumno al = new alumno();
al.nombre = "angel";
als[0].nombre = "angel";
als[0].semestre = 6;
als[0].matricula = "123";
als[0].materias[0] = "español";
als[0].calif[0] = 10;
alumno[]als=新校友[5];
//你需要补充什么
//VVVVVVVVVVVVVVV
for(int i=0;i
这将在数组中的每个空间中创建类的新实例
alumno[] als = new alumno[5];
//What You Need to Add
//VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
for (int i = 0; i < als.Length; i++)
{
als[i] = new alumno();
}
alumno al = new alumno();
al.nombre = "angel";
als[0].nombre = "angel";
als[0].semestre = 6;
als[0].matricula = "123";
als[0].materias[0] = "español";
als[0].calif[0] = 10;