ホームページ  >  記事  >  バックエンド開発  >  C# でデリゲートを宣言してインスタンス化するにはどうすればよいですか?

C# でデリゲートを宣言してインスタンス化するにはどうすればよいですか?

WBOY
WBOY転載
2023-09-04 20:01:051391ブラウズ

C# でデリゲートを宣言してインスタンス化するにはどうすればよいですか?

C# デリゲートは、C または C# の関数ポインターに似ています。デリゲートは、メソッドへの参照を保持する参照型変数です。参照は実行時に変更できます。

デリゲートを宣言するための構文 -

delegate <return type> <delegate-name> <parameter list>

次に、C# でデリゲートをインスタンス化する方法を見てみましょう。

デリゲート型を宣言した後、new キーワードを使用してデリゲート オブジェクトを作成し、それを特定のメソッドに関連付ける必要があります。デリゲートを作成するとき、新しい式に渡されるパラメーターはメソッド呼び出しと同じように記述されますが、メソッドのパラメーターは含まれません。

public delegate void printString(string s);
...
printString ps1 = new printString(WriteToScreen);
printString ps2 = new printString(WriteToFile);

次は、C# でデリゲートを宣言してインスタンス化する例です。

Example

ライブ デモンストレーション

using System;

delegate int NumberChanger(int n);
namespace DelegateAppl {

   class TestDelegate {
      static int num = 10;

      public static int AddNum(int p) {
         num += p;
         return num;
      }

      public static int MultNum(int q) {
         num *= q;
         return num;
      }

      public static int getNum() {
         return num;
      }

      static void Main(string[] args) {
         //create delegate instances
         NumberChanger nc1 = new NumberChanger(AddNum);
         NumberChanger nc2 = new NumberChanger(MultNum);

         //calling the methods using the delegate objects
         nc1(25);
         Console.WriteLine("Value of Num: {0}", getNum());
         nc2(5);
         Console.WriteLine("Value of Num: {0}", getNum());
         Console.ReadKey();
      }
   }
}

出力

Value of Num: 35
Value of Num: 175

以上がC# でデリゲートを宣言してインスタンス化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。