c# - 使用 for each 时识别最后一个循环

标签 c# java ruby loops foreach

在对对象执行“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/

相关文章:

ruby-on-rails - Ruby 自动删除临时文件?

ruby - 为什么 guard 几乎 100% 使用 cpu?

c# - 打开 XML : Get absolute coordinates a child shape

c# - 可以返回不同类型的通用方法

c# - 使用 Xamarin 的简单 2D 游戏

java - Maven 上发布新 Podio Java API

java - Jsoup 获取通用文本

c# - 在 Effort 中取消强制外键引用

java - 无法在 drools 上运行 hello world - KieContainer 未从类路径中选取 dlr 文件

ruby - 如何在 Rhodes 中将字符串(ruby 哈希)解析为 JSON 或数组?