System.IndexOutOfRangeException: 索引超出了数组界限

ccds 2013-04-29 08:40:06
try
{
string[] OtherPropArray = itemstats.OtherProp.Split('=');
itemstats.OtherProp = "";
foreach (var prop in OtherPropArray)
{
//prop = "abc-123"
string[] stat = prop.Split('-');
//Debug.WriteLine(stat.Length); 2
if (stat[1] != "0")
itemstats.OtherProp += stat[0] + "\t" + stat[1] + "-";
}
Logger.Instance.WriteItem("{0}-{1}-{2}-{3}-{4}-{5}-{6}-{7}-{8}-{9}",
itemstats.CharName,
itemstats.InternalName,
itemstats.ItemQualityLevel,
itemstats.ItemType,
itemstats.Level,
itemstats.RequiredLevel,
itemstats.WeaponHand,
itemstats.ItemLink,
itemstats.OtherProp,
itemstats.Coinage);
Send("ITEMSTATGOT");
return;
}
catch (Exception ex)
{
Send("Internal server error: " + ex.Message);
Logger.Instance.WriteGlobal(ex.ToString());
return;
}

为啥这句
if (stat[1] != "0")开始会提示System.IndexOutOfRangeException: 索引超出了数组界限啊
纠结,一直找不到原因
但其实stat[0],stat[1]都是有正确的值得
...全文
450 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccds 2013-05-01
  • 打赏
  • 举报
回复 1
搞定了,果然是我的问题,确实有一个值没有- 多谢楼上各位了
wubing1111 2013-04-30
  • 打赏
  • 举报
回复
按你现在PROP有“-”的话 正确,如果这个变量传的值没有“-”的话,你用stat[1]就超出索引了啊,这样取的值只有一个啊,
宝_爸 2013-04-30
  • 打赏
  • 举报
回复
prop 中没有 ‘-’ if ((stat.Length > 1) && (stat[1] != "0")) itemstats.OtherProp += stat[0] + "\t" + stat[1] + "-";
bdmh 2013-04-30
  • 打赏
  • 举报
回复
索引超岀了,对于数组你好歹要注意一下
EnForGrass 2013-04-29
  • 打赏
  • 举报
回复
应该不会吧, abc-123看看是不是你这个-是英文的,分割的那个字符是中文的,
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在C#开发中,“索引超出数组界限”是常遇的错误,通常源于访问数组元素时,所用索引超出数组合法范围。数组索引从0开始,一个包含n个元素的数组,其合法索引范围为0到n-1。若访问索引为n或更大元素,或负数索引,系统会抛出System.IndexOutOfRangeException异常。在“学生管理系统”项目里,该问题可能有以下原因:一是循环条件出错,像for或foreach循环终止条件设置过大,导致遍历数组或集合时越界。二是动态索引计算有误,运行时计算索引时,因逻辑错误使索引超出范围。三是数组未初始化,使用前未分配足够空间,尝试访问时会出错。四是存在null引用,若数组对象本身是null,访问时会抛异常,需确保使用前已正确实例化。五是多线程环境下,不同线程同时修改数组索引,可能使某线程在错误状态下访问数组,触发异常。六是下标硬编码错误,如数组长度9,却误写成10。解决方法有:一是审查代码,重点检查数组访问相关代码,尤其是循环和条件语句。二是借助Visual Studio等IDE调试工具,设断点观察变量值,定位异常行。三是添加异常处理代码,如try-catch块,捕获处理异常,获取详细错误信息。四是记录异常上下文信息,便于定位问题。五是编写单元测试,验证数组操作正确性,确保各种情况下都不越界。初学者要重视这些常见错误,理解并避免它们。在“学生管理系统”中,处理学生数据数组或列表时,要确保索引合法,增加、删除或查找学生信息时逻辑正确。若有代码,针对性分析更易找到问题。

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧