在循环中执行与最后一个序列不同的操作

时间:2012-12-05 14:14:01

标签: c#

我正在寻找使用C#

通过循环执行与上次迭代不同的基本语法

4 个答案:

答案 0 :(得分:4)

没有特殊的语法。

这是一种可行的方法:

for (int i = 0; i < n; ++i)
{
    if (i == n - 1)
    {
        // Something special that must be done before the last iteration
    }

    // Normal iteration
}

答案 1 :(得分:2)

什么样的收集?

假设它来自Count的{​​{1}}属性:

ICollection

对于所有其他人,您可以使用Enumerable.Count方法执行查询并枚举它们以确定计数(如果类型可以转换为for(int i=0; i < col.Count; i++) { if(i == col.Count-1) { // ... } } 它将使用ICollection<T>属性):< / p>

Count

答案 2 :(得分:0)

通常,对于T

的任何序列
bool waitingForOne = true;
T last = default(T);
foreach (T t in MySequenceOfT) // or for over whole collection or while...
{
    if (!waitingForOne)
        doSomethingWith(last);
    else
        waitingForOne = false;
    last = t;        
}
if (!waitingForOne)
    doSomethingElseWith(last);

我们的想法是,在每次迭代中,您都会保留当前项,并对上一个项执行操作(如果有的话)。最后,您在 last 项目中执行 else

答案 3 :(得分:0)

        var collection = new[] { "1", "2", "3" };
        for (var i = collection.Length - 2; i > -1; i--)
        {
            // do something with
            var element = collection[i];
        }

        // now do something with
        var last = collection.Last();