[C# チュートリアル] C# 匿名メソッド

黄舟
リリース: 2023-03-04 08:44:01
オリジナル
957 人が閲覧しました

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);
ログイン後にコピー

Example

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

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
ログイン後にコピー

上記は [c# チュートリアル] です。 C# anonymous メソッドの内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート