检查“for 循环”是在 C# 中的第一次还是最后一次迭代中
本文关键字:第一次 迭代 最后一次 for 循环 是在 检查 | 更新日期: 2023-09-27 18:30:34
我的列表中有一个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
}
}
如果你想完全避免在 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 处启动循环,并在外部进行第一次迭代处理。像这样:
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 只有一个元素的情况。
只需对第一个和最后一个项目执行一些操作,然后遍历其余项目:
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 **";
}