2020年10月23日
川俣晶の縁側ソフトウェアC# コーディング How To total 1404 count

【入門級】foreachで数値をカウントする方法

Written By: 川俣 晶連絡先

foreachで数えたい §

 forではなく、foreachで数値を数えることはできるでしょうか?

 できません。

 foreach文に数を数える機能は含まれません。

 ですが、いくつかのメソッドの力を借りれば数値をカウントできます。

 たとえば、Selectメソッドはシーケンスの項目に昇順の番号を割り当てる機能があります。これを併用すると、foreachメソッドで数字をカウントできます。

 それには、Selectメソッドの引数のラムダ式に引数が2つあるものを使います。2つの引数のうち片方はシーケンスの値そのもの。もう1つはSelectメソッドが生成した昇順の番号です。

罠の数々 §

  • Selectメソッドがカウントしてくれる番号は0から始まるので、1から始めるためにはそれに1を足す必要がある。サンプルソース中の+1をチェックしておこう。

参考リンク §

Enumerable.Select メソッド

 上記のリンクを辿って、2種類あるSelect メソッドの違いを確認しておこう。そして、インデックス値を生成した方が良い場合と必要がない場合が何か考えてみよう。

リポジトリ §

https://github.com/autumn009/cshowto

ForeachCount §

using System;

using System.Linq;

class Program

{

    static void Main()

    {

        string[] names = { "熱海", "斑鳩", "宇野" };

        foreach (var item in names.Select((name, number) => new { name, number }))

        {

            Console.WriteLine($"{item.number + 1} {item.name}");

        }

    }

}

実行結果

1 熱海

2 斑鳩

3 宇野

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?