レガシーコードからの脱却

レガシーな職場でも独学でどうにか頑張っていくブログです。

【お勉強記録】C#文法学び直し。匿名メソッド・ラムダ式

前回学んだデリゲートから、さらに匿名メソッドとラムダ式を自習。

匿名メソッドとラムダ式

匿名メソッドは名前のないメソッドのことで、デリゲートの生成においてその対象を直接埋め込む際に使うことができます。 匿名メソッドはさらに簡易的に書くことができて、その記法を「ラムダ式」といいます。 以下、実際に書いてみました。

using System;
using System.Collections;
using System.Collections.Generic;

namespace test
{
    class Program
    {
        static void Main(string[] args)
        {           
            //匿名メソッド
            Func<int, int, int> addMethod = delegate(int left, int right) 
                                            {
                                                return (left + right); 
                                            };
            //ラムダ式
            Func<int, int, int> subMethod = ((int left, int right) => (left - right));
            var mulMethod = new Func<int, int, int>((left, right) => (left * right));
            var calcMethods = new List<Func<int, int, int>>();
            calcMethods.Add(addMethod);
            calcMethods.Add(subMethod);
            calcMethods.Add(mulMethod);
            calcMethods.Add((int left, int right)=>left / right);
            foreach (var method in calcMethods)
            {
                Console.WriteLine(method(3, 2).ToString());
            }


            Console.ReadLine();
        }
    }    
}

一応、実行結果

5
1
6
1

ラムダ式Linqでよく使うので、記法とかは甘い迷いませんが、結局なんなのって話はわりとうやむやな状態でしたので、改めて見直してよかったです。

ちなみに => の読みですが、「gose to」または「左辺を右辺に入力」と読むそうです。初めて知りました。いままで「矢印」とか「イカ」とか言ってました。