Tag: CSharp/ラムダ式

目次

参考情報

基本

  • ラムダ式をメソッドの引数などに指定することができる。
  • ラムダ式を受ける側(メソッド定義)では、定義済みのデリゲートを使えば自分で1からデリゲートを定義する必要はない(自分で定義することももちろん可能)。

サンプル

Actionのサンプル

  • 定義済みActionを使ったサンプル。actionButton_Clicked→DoAction呼び出し。DoActionの中でラムダ式を使っている。
            private void DoAction(Action action)
            {
                // 前処理
                Debug.WriteLine("DoAction 開始");
    
                // actionを差し替えることができる
                action();
    
                // 後処理
                Debug.WriteLine("DoAction 終了");
            }
    
            private void actionButton_Clicked(object sender, RoutedEventArgs e)
            {
                // 引数部分 () => {} がラムダ式
                DoAction(() => { Debug.WriteLine("Hello World!"); });
                DoAction(() => { Debug.WriteLine("こんにちはセカイ!"); });
            }
    
  • 実行結果。メソッドDoActionの中の一部の処理を差し替えることができる。
    DoAction 開始
    Hello World!
    DoAction 終了
    
    DoAction 開始
    こんにちはセカイ!
    DoAction 終了
    
    

定義済みデリゲート一覧

  • 汎用的に使用できる定義済みのデリゲート型は?[C#、VB] − @ITより
    • void Action()
    • void Action<T>(T obj)
    • void Action<T1, T2>(T1 arg1, T2 arg2)
    • void Action<T1, T2, T3>(T1 arg1, T2 arg2, T3 arg3)
    • void Action<T1, T2, T3, T4>(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
    • TResult Func<TResult>()
    • TResult Func<T, TResult>(T arg)
    • TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2)
    • TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3)
    • TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4)
    • int Comparison<T>(T x, T y)
    • TOutput Converter<TInput, TOutput>(TInput input)
    • bool Predicate<T>(T obj)
    • void MethodInvoker()

Tips

ラムダ式とデリゲートの違い


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-04-13 (水) 16:48:09