This question already has answers here:
What is an IndexOutOfRangeException / ArgumentOutOfRangeException and how do I fix it?
(4个答案)
3年前关闭。
我下面有以下代码:
错误发生在这里,
它应该是:
您的迭代次数超出了1个索引。
这也适用于其他
题外话:
由于
您的
所以这个
...可以替换为:
(4个答案)
3年前关闭。
我下面有以下代码:
List<string> group = new List<string>();
List<int> groupInNumber = new List<int>();
Dictionary<string, List<string>> dicMyMap = new Dictionary<string, List<string>>();
Dictionary<string, int[]> a = new Dictionary<string, int[]>();
Dictionary<string, string[]> b = new Dictionary<string, string[]>();
private void SetData(out ExpandableListViewAdapter mAdapter)
{
int[] currentStatus = a["currentStatus"];
string[] statusDesc = b["description"];
int[] ticketID = a["ticketID"];
foreach (int s in currentStatus)
{
if (s == 1)
{
group.Add(statusDesc[0]);
}
else if (s == 2)
{
group.Add(statusDesc[1]);
}
else if (s == 3)
{
group.Add(statusDesc[2]);
}
else if (s == 4)
{
group.Add(statusDesc[3]);
}
else if (s == 5)
{
group.Add(statusDesc[4]);
}
else if (s == 6)
{
group.Add(statusDesc[5]);
}
else if (s == 7)
{
group.Add(statusDesc[6]);
}
else if (s == 8)
{
group.Add(statusDesc[7]);
}
else if (s == 9)
{
group.Add(statusDesc[8]);
}
else if (s == 10)
{
group.Add(statusDesc[9]);
}
}
for (int p = 0; p <= ticketID.Count(); p++)
{
groupInNumber.Add(ticketID[p]);
}
List<string> ticket = new List<string>();
for (int z = 0; z <= ticketID.Count(); z++)
{
string tix = ticketID[z].ToString();
ticket.Add(tix);
dicMyMap.Add(groupInNumber[z].ToString(), ticket);
ticket.Remove(tix);
}
mAdapter = new ExpandableListViewAdapter(this, group, dicMyMap);
}
错误发生在这里,
groupInNumber.Add(ticketID[p]);
我不明白的是为什么当0
应该引用数组中的第一个值时,索引超出了范围。我尝试计算int[] ticketID = a["ticketID"];
中的项目,但不为null,返回了39
(数组中的项目数)。 最佳答案
这是您的问题:
for (int p = 0; p <= ticketID.Count(); p++)
{
groupInNumber.Add(ticketID[p]);
}
它应该是:
for (int p = 0; p < ticketID.Count(); p++)
您的迭代次数超出了1个索引。
0...9
是10
项..因此,请为0..count-1
创建一个for循环,因此它应该为p < ticketID.Count()
这也适用于其他
for
循环题外话:
由于
ticketID
是Array
,因此您也可以使用Length
属性。for (int p = 0; p < ticketID.Length; p++)
您的
groupInNumber
是List<int>
。 List类还具有AddRange()
方法:所以这个
for
循环...for (int p = 0; p <= ticketID.Count(); p++)
{
groupInNumber.Add(ticketID[p]);
}
...可以替换为:
groupInNumber.AddRange(ticketID);
09-04 18:34