山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

実践で役立つ C#プログラミングのイディオム/定石&パターン その4

Chapter3 ラムダ式LINQ の基礎

今回から Chapter 3 です。

delegate

delegate メソッドを使って、引数として関数を受けるとメソッドを作ることができます。

    public class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            p.Do();
        }

        public void Do()
        {
            int[] numbers = { 1, 2, 3, 4, 5, 6 };
            int cnt = Count(numbers, IsEven);
            Console.WriteLine(cnt);
        }
        public delegate bool Judgemente(int value);

        public int Count(int[] numbers, Judgemente judge)
        {
            int count = 0;
            foreach (var n in numbers)
            {
                if (judge(n) == true)
                {
                    count++;
                }
            }
            return count;
        }

        public bool IsEven(int n)
        {
            return n % 2 == 0;
        }
    }

ラムダ式

上のプログラムで IsEven() メソッドの部分をラムダ式で書くことができます。

Console.WriteLine(Count(numbers, n => n % 2 == 0));

参考サイト

qiita.com