索引超出范围 必须为非负值并小于集合大小怎么解决

System.ArgumentOutOfRangeException:索引超出范围。必须为非负值并小于集合大小。参数名:indexServerstacktrace:在Sy... System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index

Server stack trace:
在 System.ThrowHelper.ThrowArgumentOutOfRangeException()
在 System.Collections.Generic.List`1.get_Item(Int32 index)
在 TerraMap.Data.TileInfos.get_Item(Int32 id, Int16 u, Int16 v) 位置 c:\source\terramap\Solution\Data\TileInfos.cs:行号 26
在 TerraMap.Data.World.GetTileColor(Int32 y, Tile tile) 位置 c:\source\terramap\Solution\Data\World.cs:行号 1032
在 TerraMap.Data.World.ReadTilesVersion2(BinaryReader reader, Boolean[] importance) 位置 c:\source\terramap\Solution\Data\World.cs:行号 971
在 TerraMap.Data.World.ReadWorldVersion2(BinaryReader reader) 位置 c:\source\terramap\Solution\Data\World.cs:行号 530
在 TerraMap.Data.World.Read(String filename) 位置 c:\source\terramap\Solution\Data\World.cs:行号 506
在 TerraMap.Data.World.<>c__DisplayClass1.<ReadAsync>b__0() 位置 c:\source\terramap\Solution\Data\World.cs:行号 468
在 System.Threading.Tasks.Task.InnerInvoke()
在 System.Threading.Tasks.Task.Execute()

Exception rethrown at [0]:
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()
在 TerraMap.MainWindow.<Open>d__15.MoveNext() 位置 c:\source\terramap\Solution\TerraMap\MainWindow.xaml.cs:行号 166

Exception rethrown at [1]:
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()
在 TerraMap.MainWindow.<Open>d__5.MoveNext() 位置 c:\source\terramap\Solution\TerraMap\MainWindow.xaml.cs:行号 131

Exception rethrown at [2]:
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()
在 TerraMap.MainWindow.<OnOpenExecuted>d__87.MoveNext() 位置 c:\source\terramap\Solution\TerraMap\MainWindow.xaml.cs:行号 1029

Exception rethrown at [3]:
在 System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)
在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
在 MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
展开
 我来答
守守拙
2017-02-22 · TA获得超过100个赞
知道小有建树答主
回答量:52
采纳率:0%
帮助的人:36.4万
展开全部

通常发生索引越界都是在操作集合时发生的 提示已经很清楚的告诉你了 索引不能为负值且要小于集合的大小 不能为负值因为下标是从0开始 你要去集合里找一个-1的当然越界 你集合长度为5 你要去找一个下标为5的 也会越界 所以要小于集合的大小 你最好是能贴出代码

举个例子

int[] intArr=new int[5];
int a=intArr[intArr.Length];

上面就会发生索引越界 因为intArr长度为5 我要取下标为5的也就是第6个元素了

只需要把intArr.Length改成intArr.Length-1就好了

炫彩界面库
2017-03-16 · 超过32用户采纳过TA的回答
知道答主
回答量:79
采纳率:100%
帮助的人:38.5万
展开全部
检查索引是否超出范围
例如:
int array[10]; //大小为10 的数组
int index=0; //定义索引变量
if(index>=0 && index<10){
索引在范围内
}else{
索引超出范围
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunnyxixixixi
2017-02-09 · 超过15用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:11.4万
展开全部
比如 int[] iamarray=new int[]{1,2,3};
因为数组长度为3,最后一个为iamarray[2],如果想得到 int number=iamarray[3];就会报上面那个错误,如果在for循环里面出现,要约束好索引i的范围
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式