我的列表中有一个for loop
,我希望在第一次和最后一次迭代时做一些不同的事情。我发现这个问题大约是foreach loop
。
我如何才能在for loop
中实现目标?
string str;
for (int i = 0; i < myList.Count; i++)
{
//Do somthin with the first iteration
str = "/" + i;
//Do somthin with the last iteration
}
我想知道是否还有其他方法:
for (int i = 0; i < myList.Count; i++)
{
if (i == 0)
{
//Do somthin with the first iteration
}
str = "/" + i;
if (i == myList.Count-1)
{
//Do somthin with the last iteration
}
}
答案 0 :(得分:2)
如果你想在你的for循环中完全避免条件(根据你提供的细节看起来就是这样),你应该在第一个和最后一个项目上执行你喜欢的任何逻辑。然后,您可以构造for循环,以便忽略可枚举中的第一个和最后一个元素(将i
初始化为1并将条件更改为i < myList.Count - 1
)。
if (myList != null && myList.Count >= 2)
{
YourFirstFunction(myList[0]);
for (int i = 1; i < myList.Count - 1; i++)
{
YourSecondFunction(myList[i])
}
YourThirdFunction(myList[myList.Count - 1]);
}
将YourNFunction
替换为您要分别应用于第一个索引,索引之间和最后一个索引的逻辑。
请注意,我已经检查了myList是否有两个或更多项 - 我认为这个逻辑没有任何意义,除非至少第一个和最后一个索引不相同。鉴于您还计划对中间的项目执行某些操作,您可能希望将其更改为3,以确保您始终具有明确的开头,中间和结尾。
答案 1 :(得分:1)
只需对第一个和最后一个项目执行某些操作,然后循环完成其余项目:
if (myList != null && myList.Any())
{
// Do something with the first item here
var str = "** START **" + myList.First();
for (int i = 1; i < myList.Count - 1; i++)
{
str += "/" + i;
}
//Do something with the last item here
if (myList.Count > 1) str += myList.Last() + " ** END **";
}
答案 2 :(得分:1)
您可以从1开始循环并在外部进行第一次迭代处理。像这样:
if(myList != null && myList.Count > 0){
// Process first and last element here using myList[0] and myList[myList.Count -1]
}
for(int i = 1; i <myList.Count - 1;i++){
// process the rest
}
您需要考虑myList只有一个元素的场景。