C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.90430 の関連記事表示

<< 0 >>
■90430  Re[5]: 引数のあるメソッドをメソッドに渡す
□投稿者/ 魔界の仮面弁士 -(2019/03/11(Mon) 10:40:39)
    No90426 (B.B さん) に返信
    >>えぇと…それはラムダ式とは関係ないです。(^_^:
    >>Func<,> はジェネリックなデリゲート型ですね。
    >
    > デリゲート型というのがあるんですね(;´Д`A ```

    「+=」演算子を使うと、一つのデリゲートに複数のメソッドグループを含めることもできます。(-= で削除)
    イベントを割り当てる際にも使われますね。


    // 「void Foo()」な呼び出しを表すデリゲート型を宣言
    delegate void SampleDelegate();

    private void InstanceMethod() { MessageBox.Show(nameof(InstanceMethod)); }
    private static void StaticMethod() { MessageBox.Show(nameof(StaticMethod)); }

    private void Form1_Load(object sender, EventArgs e)
    {
     // ローカル関数
     void LocalFunction() { MessageBox.Show(nameof(LocalFunction)); };
     void ExpressionBodiedLocalFunction() => MessageBox.Show(nameof(ExpressionBodiedLocalFunction));

     // デリゲートインスタンス
     Action ActionInstance = () => MessageBox.Show(nameof(ActionInstance));
     MethodInvoker MethodInvokerInstance = () => MessageBox.Show(nameof(MethodInvokerInstance));


     // デリゲート型の変数を用意して、「+=」でつなぐ
     SampleDelegate methods = null;


     methods = delegate { MessageBox.Show("anonymous1"); }; // 匿名メソッド
     methods += delegate { MessageBox.Show("anonymous2"); }; // += で追加していける
     methods += () => MessageBox.Show("lambda"); // ラムダ式も渡せる
     methods += InstanceMethod;
     methods += StaticMethod;
     methods += LocalFunction;
     methods += ExpressionBodiedLocalFunction;
     // methods += ActionInstance; // これは NG
     // methods += MethodInvokerInstance; // これは NG
     methods += new SampleDelegate(ActionInstance); // これは OK
     methods += new SampleDelegate(MethodInvokerInstance); // これは OK


     // 割り当てられた呼び出しの数
     MessageBox.Show($"{methods.GetInvocationList().Length}", "呼び出しリストの数");

     // デリゲート呼び出し(各メソッドが登録順に呼び出される)
     methods();
    }
記事No.90412 のレス /過去ログ156より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -