C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でデリゲートを宣言する方法は?


C#のデリゲートは、メソッドへの参照です。デリゲートは、メソッドへの参照を保持する参照型変数です。参照は実行時に変更できます。

デリゲートは、イベントとコールバックメソッドを実装するために特に使用されます。すべてのデリゲートは、System.Delegateクラスから暗黙的に派生します。

C#でデリゲートを宣言する方法を見てみましょう-

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

C#でデリゲートを操作する方法を学ぶための例を見てみましょう-

using System;
using System.IO;

namespace DelegateAppl {

   class PrintString {
      static FileStream fs;
      static StreamWriter sw;
   
      // delegate declaration
      public delegate void printString(string s);

      // this method prints to the console
      public static void WriteToScreen(string str) {
         Console.WriteLine("The String is: {0}", str);
      }

      //this method prints to a file
      public static void WriteToFile(string s) {
         fs = new FileStream("c:\\message.txt",
         FileMode.Append, FileAccess.Write);
         sw = new StreamWriter(fs);
         sw.WriteLine(s);
         sw.Flush();
         sw.Close();
         fs.Close();
      }

      // this method takes the delegate as a parameter and uses it to
      // call the methods as required
      public static void sendString(printString ps) {
         ps("Hello World");
      }

      static void Main(string[] args) {
         printString ps1 = new printString(WriteToScreen);
         printString ps2 = new printString(WriteToFile);
         sendString(ps1);
         sendString(ps2);
         Console.ReadKey();
      }
   }
}

出力

The String is: Hello World

  1. JavaScriptでブロックスコープ変数を宣言する方法は?

    ブロックスコープの変数を宣言するには、ES2015で導入されたキーワードletとconstを使用します。 以下は、JavaScriptでのブラックスコープ変数の宣言を示すコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /&g

  2. Androidでグローバル変数を宣言する方法は?

    この例は、Androidでグローバル変数を宣言する方法を示していますか? ステップ1 − Android Studioで新しいプロジェクトを作成し、[ファイル]⇒[新しいプロジェクト]に移動して、新しいプロジェクトを作成するために必要なすべての詳細を入力します。 ステップ2 −次のコードをres / layout/activity_main.xmlに追加します。 <?xml version = "1.0" encoding = "utf-8"?> <LinearLayout xmlns:android = "https://