gpt4 book ai didi

c# - 索引越界 c#(我正在尝试添加 savegame 并使用 WriteAllLines)

转载 作者:太空狗 更新时间:2023-10-30 00:29:53 25 4
gpt4 key购买 nike

我正在尝试为一个非常简单的游戏制作游戏存档,这是我现在用来将钱写入 .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 转换为字符串)

最佳答案

String[] Money = new String[MainForm.Money];

在这里您创建大小为 MainForm.Money 的数组。假设 MainForm.Money 的值为 10。该数组的大小为 10,这意味着有 10 个槽。这些编号为 0-9。

Money[MainForm.Money] = MainForm.Money.ToString();

这里你做的相当于 Money[10],当它只有最多 9 个槽时。因此你进入了数组的“越界”。

关于c# - 索引越界 c#(我正在尝试添加 savegame 并使用 WriteAllLines),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45947843/

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