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

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

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

目次

受講者数No.1!初心者からプロへ導く信頼のスクール

    短期間で習得可能!未経験から実践力を磨く充実のプログラム

    今なら無料相談でAmazonギフトカードがもらえる!

    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をコピーしました!
    目次