试图弄清楚如何检查下一个字符串与循环中的当前字符串(伪代码):
string currentName = string.Empty;
for(int i=0; i < SomeList.Count; i++)
{
currentName = SomeList[i].Name;
//do some other logic here
if(string.Compare(SomeList[i].Name, SomeList[i+1].Name) == 0)
// do something
}
这似乎不起作用:
if(string.Compare(SomeList[i].Name, SomeList[i+1].Name)
我想查看当前字符串是否与循环中的下一个字符串相同,然后才能进入循环中的下一个迭代。
答案 0 :(得分:3)
你很亲密。当你到达最后一个元素时,你会得到一个IndexOutOfRangeException
,因为你试图检查以下元素(固有地,没有)。
只需更改
for(int i=0; i < SomeList.Count(); i++)
到
for(int i=0; i < SomeList.Count() - 1; i++)
答案 1 :(得分:0)
它可能会抛出IndexOutOfRangeException
,不是吗?你必须在高端观察你的边界情况:
if (i != SomeList.Count - 1 &&
string.Compare(SomeList[i].Name, SomeList[i+1].Name) == 0)
{
// Do something
}
答案 2 :(得分:0)
我建议你将索引计数器从1开始,并与SomeList [i-1],SomeList [i]进行比较,这样就不会得到IndexOutOfRangeException
。
此外,这是区分大小写的匹配,调用ToUpper()
方法以确保不区分大小写匹配。