我有一个List<>
作为lsSplitMember我通过while循环将它发送给函数
作为一个字符串。但它会抛出异常消息&#34; Index was out of range
。必须是非负的且小于集合的大小&#34;。
我尝试过以下代码。
//Globally declared variable lsSplitMember
List<String> lsSplitMember=new List<String>();
int ic = lsSplitMember.Count();
while (ic != 0)
{
Process_Split(lsSplitMember[ic]);
ic--;
}
Protected void Process_Split(String Member)
{
//Some Code
}
那么我该如何解决这个问题呢?
答案 0 :(得分:1)
int ic = lsSplitMember.Count();
while (ic != 0)
{
Process_Split(lsSplitMember[ic-1]); // your index was off-by-one
ic--;
}
请注意,使用C#语言功能,这是很多不必要的元代码:
foreach(var text in lsSplitMember)
{
Process_Split(text);
}
这更容易阅读,并且更不容易出错。如果您需要将列表颠倒过程,则可以先将其反转。
答案 1 :(得分:1)
计数比List
的最后一个索引大一,因为它们是零索引的,这是您尝试访问的索引。真的,你应该使用迭代器:
foreach( string s in lsSplitMember )
Process_Split( s );
答案 2 :(得分:1)
试试这个......
将Process_Split(lsSplitMember[ic]);
更改为Process_Split(lsSplitMember[ic-1]);
答案 3 :(得分:1)
试试这个
List<String> lsSplitMember=new List<String>();
int ic = lsSplitMember.Count();
while (ic != 0)
{
ic--;
Process_Split(lsSplitMember[ic]);
}
Protected void Process_Split(String Member)
{
//Some Code
}
答案 4 :(得分:0)
lsSplitMember.ForEach(s =>
{
Process_Split(s);
});
如果lsSplitMember不为空