C# チュートリアルlogin
C# チュートリアル
著者:php.cn  更新時間:2022-04-11 14:06:23

C# の匿名メソッド



同じラベルを持つメソッドを参照するためにデリゲートが使用されることはすでに述べました。つまり、デリゲート オブジェクトを使用して、デリゲートが参照できるメソッドを呼び出します。

匿名メソッド は、コードのブロックをデリゲート パラメーターとして渡すための手法を提供します。匿名メソッドは、名前がなく本体のみを持つメソッドです。

匿名メソッドでは戻り値の型を指定する必要はありません。戻り値の型はメソッド本体内の return ステートメントから推測されます。

匿名メソッドを記述するための構文

匿名メソッドは、delegateキーワードを使用してデリゲートインスタンスを作成することによって宣言されます。例:

delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x)
{
    Console.WriteLine("Anonymous Method: {0}", x);
};

コード ブロック Console.WriteLine("Anonymous Method: {0}", x); は匿名メソッドの本体です。

デリゲートは、匿名メソッドまたは名前付きメソッドを介して、つまりメソッドパラメータをデリゲートオブジェクトに渡すことによって呼び出すことができます。

例:

nc(10);

次の例は、匿名メソッドの概念を示しています:

using System;

delegate void NumberChanger(int n);
namespace DelegateAppl
{
    class TestDelegate
    {
        static int num = 10;
        public static void AddNum(int p)
        {
            num += p;
            Console.WriteLine("Named Method: {0}", num);
        }

        public static void MultNum(int q)
        {
            num *= q;
            Console.WriteLine("Named Method: {0}", num);
        }
        public static int getNum()
        {
            return num;
        }

        static void Main(string[] args)
        {
            // 使用匿名方法创建委托实例
            NumberChanger nc = delegate(int x)
            {
               Console.WriteLine("Anonymous Method: {0}", x);
            };
            
            // 使用匿名方法调用委托
            nc(10);

            // 使用命名方法实例化委托
            nc =  new NumberChanger(AddNum);
            
            // 使用命名方法调用委托
            nc(5);

            // 使用另一个命名方法实例化委托
            nc =  new NumberChanger(MultNum);
            
            // 使用命名方法调用委托
            nc(2);
            Console.ReadKey();
        }
    }
}

上記のコードがコンパイルされて実行されると、次の結果が生成されます:

Anonymous Method: 10
Named Method: 15
Named Method: 30

PHP中国語ウェブサイト