【发布时间】:2018-02-07 10:13:27
【问题描述】:
我正在尝试为一个非常简单的游戏制作存档游戏,这是我现在用来将钱写入 .txt 文件的代码(NameBox 是用于写入 .txt 文件名称的文本框) :
private void SaveBtn_Click(object sender, EventArgs e)
{
String filename = NameBox.Text;
if (filename == "")
{
filename = "New Save";
}
filename += ".txt";
String[] Money = new String[MainForm.Money];
Money[MainForm.Money] = MainForm.Money.ToString();
System.IO.File.WriteAllLines(filename, Money);
Application.Exit();
}
但是,在
之后的任何行上都会出现索引越界错误Money[MainForm.Money] = MainForm.Money.ToString();
我也试过这样做:
for (int i = 0; i < MainForm.Money; i++){
Money[MainForm.Money] = MainForm.Money.ToString();
}
但它在结束体上给了我一个错误(我称之为波浪形括号) 我之前做过一个保存游戏,其中包含一组墙壁和士兵,使用此代码保存他们的大小和位置(wallList[i].ToString() 是指墙壁类中返回所有值的方法):
private void SaveBtn_Click(object sender, EventArgs e)
{
String filename = filenametxt.Text;
if (filename == "")
{
filename = "Level";
}
filename += ".txt";
String[] lines = new String[MainForm.wallList.Count +
MainForm.soldierList.Count+1];
for (int i = 0; i < MainForm.wallList.Count; i++)
{
lines[i] = MainForm.wallList[i].ToString();
}
lines[MainForm.wallList.Count] = "@";
for (int i = 0; i < MainForm.soldierList.Count; i++)
{
lines[i + MainForm.wallList.Count +1] =
MainForm.soldierList[i].ToString();
}
System.IO.File.WriteAllLines(filename, lines);
Application.Exit();
}
如果有人可以帮助我,我将不胜感激! (请向我解释代码的每一部分的含义,例如解释 .ToString() 将 int 转换为字符串)
【问题讨论】:
-
一个 IndexOutOfBoundsException 意味着您正在尝试访问不存在的集合的一部分。该指数要么太高要么太低。将您的收藏想象成一行人,您试图找到人 X,但没有人 X。更好地理解此异常可能会让您更清楚为什么会发生这种情况。
-
是的,我知道索引越界异常是什么,我只是不确定它为什么会发生。当我为我提到的结束游戏做存档游戏时发生了这种情况,但我设法通过像我在这里所做的那样玩弄代码来修复它。感谢您的帮助!
标签: c# indexoutofboundsexception