检查“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 循环”是在 C# 中的第一次还是最后一次迭代中

如果你想完全避免在 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 **";
}