オブジェクトメソッドでもデリゲート

プログラミングC# 第6版 5.1


前回の記事で関数をデリゲートで呼ぶ処理を勉強しましたが、関数だけでなくオブジェクトのメソッドすらもデリゲートとして登録することができます。

using System;

delegate void CDelegateClass (int i);

class Hoge {
    public string str;
    public Hoge (string s) {
        str = s;
    }
    public void Foo (int i) {
        Console.WriteLine("Hoge.Foo: " + str + ": " + i);
    }
}

class Program {
    static void Main () {
        Hoge hoge = new Hoge("test1");
        
        CDelegateClass dobj = hoge.Foo;
        
        dobj(100);
    }
}
$ main
Hoge.Foo: test1: 100

いやぁ面白いですね。