在对对象执行“foreach”时,我想对最后一次循环迭代做一些不同的事情。我使用的是 Ruby,但 C#、Java 等也是如此。
list = ['A','B','C']
list.each{|i|
puts "Looping: "+i # if not last loop iteration
puts "Last one: "+i # if last loop iteration
}
所需的输出相当于:
Looping: 'A'
Looping: 'B'
Last one: 'C'
显而易见的解决方法是使用 'for i in 1..list.length'
将代码迁移到 for 循环,但 for each 解决方案感觉更优雅。在循环期间编写特殊情况的最优雅的方法是什么?用foreach能做到吗?
最佳答案
我在这里看到了很多复杂、难以阅读的代码......为什么不保持简单:
var count = list.Length;
foreach(var item in list)
if (--count > 0)
Console.WriteLine("Looping: " + item);
else
Console.Writeline("Lastone: " + item);
这只是一个额外的声明!
另一种常见的情况是你想对最后一项做一些额外或更少的事情,比如在项目之间放置一个分隔符:
var count = list.Length;
foreach(var item in list)
{
Console.Write(item);
if (--count > 0)
Console.Write(",");
}
关于c# - 使用 for each 时识别最后一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068110/