2010年1月7日木曜日

delegateキーワードを使用してDelegateを定義し、インスタンスメソッド、静的メソッドをそれぞれ登録して実行してみる。

using System;


// Delegateを定義
delegate void SampleDelegate(int n,string s);


class SampleClass
{
    public void sampleMethod1(int n, string s)
    {
        Console.WriteLine("{0}:{1}", n, s);
    }
    // 静的メソッド
    public static void sampleMethod2(int n, string s)
    {
        Console.WriteLine("{0}:{1}", ++n, s);
    }
}


class MainClass
{
    static void Main()
    {
        // SampleClassをインスタンス化
        SampleClass sample = new SampleClass();
        // SampleDelegate型の変数sdを定義
        SampleDelegate sd = sample.sampleMethod1;
        // 出力値:1:Method1
        sd(1, "Metho1");
        /* sdに登録するMethodを変更
         * 静的メソッドなのでインスタンス化しないで
         * クラス名だけで呼び出せる */
        sd = SampleClass.sampleMethod2;
        // 出力値:(++1=)2:Method2
        sd(1, "Method2");
    }
}

0 コメント:

コメントを投稿