foreachでループ回数を取得する[C#/VB]

For Eachでループしている回数を取得する方法ってないのかな?

ループごとに回数を加算することもできますが、LINQを利用することで自然にカウントを行うことができます。

目次

LINQを利用したFor Eachの回数取得

 LINQのSelectメソッドを利用し、コレクションにインデックスを持つ匿名型のコレクションを作ることができます。これを利用して、ループ回数としてインデックスを利用します。

        private void button1_Click(object sender, EventArgs e)
        {
            var names = new string[] { "田中", "佐藤", "森田" };
            //Selectメソッドを利用してIndexを付与した匿名型のコレクションを生成する
            foreach (var X in names.Select((it,Index) => new { it,Index }))
            {
                MessageBox.Show("Name:" +  X.it + "| ループ回数:" + X.Index);
            }
        }
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim names = New String() {"田中", "佐藤", "森田"}

        For Each X In names.Select(Function(it, Index) New With {it, Index})
            MsgBox("Name:" & X.it & "| ループ回数:" & X.Index)
        Next

    End Sub

リスキリングでキャリアアップしてみませんか?

リスキリング(学び直し)は、経済産業省が推奨しており、

今だけ、最大70%のキャッシュバックを受けることができます。

リスキリング 給付金が出るスクール紹介

最大70%の給付金が出るおすすめのプログラミングスクール!

国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!

興味のある方はすぐに確認しましょう。

Tupleを利用してシンプルにする

Visual Studio2017以降では以下のようにTupleを利用してシンプルにコードを書くこともできます。

            foreach (var X in names.Select((it,Index) => (it,Index) ))
            {
                MessageBox.Show("Name:" +  X.it + "| ループ回数:" + X.Index);
            }
        For Each X In names.Select(Function(it, Index) (it, Index))
            MsgBox("Name:" & X.it & "| ループ回数:" & X.Index)
        Next
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次