在C#中使用类需要帮助的菜鸟

zac*_*con 0 c# arrays class

我正在研究一个将数字(int)提供给2D数组的程序.

这部分很容易,但我的教授补充说,程序应该能够通过字符串(通常是字母)来确定数字的添加位置.

通常,我只是将int 2D数组转换为字符串1,将字符串连接到数字,然后说工作完成.

但是教授给我们提供了一个"哦废话"的时刻,当时他提到必须用课堂完成.

我不是很了解类,我只使用它们通过get/set方法将一个变量以一种形式传递给另一种形式.

基本上,教授想要的是Array在同一个索引中包含int和string,如下所示:

班级:

class ClassName
{
  public int num;
  public string loc;
}
Run Code Online (Sandbox Code Playgroud)

主要方案:

public frmSGame()
{
  InitializeComponent();
}

ClassName[,] myArray = new ClassName[9,8];

public frmMain_Load(object sender, EventArgs e)
{
  clearArray();
}

public void clearArray()
{            
  for (int y = 0; y < 8; i++)
  {
    for (int x = 0; x < 9; j++)
    {
      myArray[x, y].num = -1;
      myArray[x, y].loc = "A";
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题就在于此.运行该程序会在clearArray()函数的for int循环中产生"NullReferenceException未处理 - 对象引用未设置为对象的实例".

我真的不确定我做错了什么.在clearArray()函数中放置"ClassName [,] myArray = new ClassName [9,8]"什么也没做,因为我需要在多个函数中修改数组,所以我很确定在每个函数中都会引用它灾难性的结果.

请问我有一些帮助/意见吗?

mqp*_*mqp 5

声明生成ClassName[,] myArray = new ClassName[9,8];一个包含72个对象空格的数组,但它不会生成72个对象.该数组从空开始.

在尝试对数组中的对象执行任何操作之前(例如访问numloc),您需要实际创建它们.您可以在内部循环中执行此操作:

for (int x = 0; x < 9; j++)
{
  myArray[x, y] = new ClassName();
  myArray[x, y].num = -1;
  myArray[x, y].loc = "A";
}
Run Code Online (Sandbox Code Playgroud)