1
我目前正在嘗試解決這個問題,我遇到的是控制檯發佈錯誤的數組,如果有人知道如何解決這個問題。我該如何解決這個System.IndexOutOfRangeException:索引超出了數組的邊界
錯誤在行246上。
if (Tamer.DigimonList[3] == null) qry.Add("mercenary3", null);
錯誤日誌
System.IndexOutOfRangeException:索引陣列的邊界之外。 at Digital_World.SqlDB.SaveTamer(Client client)in C:\ Users \ Digimon Master \ Dropbox \ Digimon Master Project \ DMOFrosty'sPost \ Server \ ServerBuildingSection \ DigitalWorld \ Database - Game.cs:line 246 連接已關閉。
守則
public static void SaveTamer(Client client)
{
int lastChar = -1, charId = -1;
try
{
using (MySqlConnection con = Connect())
using (MySqlCommand cmd = new MySqlCommand("SELECT * FROM `acct` WHERE `accountId` = @acct", con))
{
cmd.Parameters.AddWithValue("@acct", client.AccountID);
using (MySqlDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.SingleRow))
if (dr.HasRows && dr.Read())
{
lastChar = (int)dr["lastChar"];
if (lastChar != -1)
{
charId = (int)dr[string.Format("char{0}", lastChar + 1)];
}
}
}
if (lastChar != -1)
{
Character Tamer = client.Tamer;
using (MySqlConnection con = Connect())
{
Query qry = new Query(Query.QueryMode.UPDATE, "chars", new Tuple<string, object>("characterId", Tamer.CharacterId));
qry.Add("charModel", (int)Tamer.Model);
qry.Add("charName", Tamer.Name);
qry.Add("charLv", Tamer.Level);
qry.Add("experience", Tamer.EXP);
qry.Add("money", Tamer.Money);
qry.Add("partner", Tamer.DigimonList[0].DigiId);
if (Tamer.DigimonList[1] == null) qry.Add("mercenary1", null);
else qry.Add("mercenary1", Tamer.DigimonList[1].DigiId);
if (Tamer.DigimonList[2] == null) qry.Add("mercenary2", null);
else qry.Add("mercenary2", Tamer.DigimonList[2].DigiId);
if (Tamer.DigimonList.Length >= 3) {
if (Tamer.DigimonList[3] == null) qry.Add("mercenary3", null);
else qry.Add("mercenary3", Tamer.DigimonList[3].DigiId);
}
我已經嘗試過此修復程序,但仍然收到相同的錯誤。 – Entonez