我正在研究一个将数字(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]"什么也没做,因为我需要在多个函数中修改数组,所以我很确定在每个函数中都会引用它灾难性的结果.
请问我有一些帮助/意见吗?
声明生成ClassName[,] myArray = new ClassName[9,8];一个包含72个对象空格的数组,但它不会生成72个对象.该数组从空开始.
在尝试对数组中的对象执行任何操作之前(例如访问num或loc),您需要实际创建它们.您可以在内部循环中执行此操作:
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)