c delegate tutorial how instantiate
このチュートリアルでは、簡単なコード例を使用してC#デリゲートを使用する方法について説明します。また、C#のマルチキャストデリゲートについても学習します。
C#デリゲートとは何ですか?
C#では、デリゲートはC ++で使用可能なポインターに似ています。これは基本的に、別のメソッドへの参照を含む参照型変数です。
さらに、その参照は実行時に変更できません。 System.Delegateクラス内で利用できます。デリゲートは、コールバック関数またはイベントハンドラーを処理するために使用されます。
これは関数へのポインタのようなものであり、キーワードデリゲートとそれに続く関数のシグネチャを使用して宣言できます。
デリゲートの宣言は、デリゲートが参照できるメソッドも決定します。つまり、デリゲートと同じ署名を持つ参照メソッドにすることができます。
学習内容:
C#でデリゲートをインスタンス化する
デリゲートが宣言されると、新しいキーワードを使用してインスタンス化できるため、メソッドに関連付ける必要があります。メソッドと同じように、式は引数を渡す必要があります。
代理人の呼び出し
デリゲートは、メソッドと同じように呼び出すことができます。
例:
class Program { public delegate void methodDelegate(); public static void Main(string() args) { methodDelegate md = new methodDelegate(method); md.Invoke(); } public static void method() { Console.WriteLine('Delegate pointing to method'); } }
出力
上記のプログラムの出力は次のようになります。
メソッドを指すデリゲート
説明
アンドロイドのためのブルートフォースパスワードクラッカーのダウンロード
上記のプログラムでは、デリゲートのオブジェクトを作成し、呼び出す必要のあるメソッドに向けています。次に、invoke()を使用して、「delegate」を使用してメソッドを呼び出しました。
なぜC#デリゲートを使用する必要があるのですか?
メインメソッドから直接メソッドを呼び出すこともできますが、なぜ本当にデリゲートを使用する必要があるのでしょうか。
簡単な言葉での委任とは、2つのグループ間のコミュニケーションの代表者を意味します。プログラミングのコンテキストでも、同様の役割があります。コールバックに使用されます。
実行時間の長いメソッドがあり、実行の進行状況を継続的に確認する必要があると仮定します。これを行うには、デリゲートを使用したコールバックを使用します。これにより、実行時間の長いメソッドを追跡できます。
例えば:
public class Program { One on = new One(); public static void Main(string() args) { One.generateNumbers(callDelegate); Console.ReadLine(); } public static void callDelegate(int j) { Console.WriteLine('The current random number is :' + j); } } public class One { public delegate void callingDelegate(int j); public static void generateNumbers(callingDelegate cd) { Random rn = new Random(); int i = 0; int j = 0; while (i <10) { j = rn.Next(9999); cd(j); i++; } } }
上記のプログラムの出力は次のようになります。
出力
現在の乱数は:1559です
現在の乱数は:6127です
現在の乱数は:6639です
現在の乱数は:3963です
現在の乱数は:4479です
現在の乱数は:6898です
現在の乱数は:1390です
現在の乱数は:6409です
現在の乱数は:2629です
現在の乱数は:5464です
上記のプログラムでは、デリゲートを使用して、特定の反復に対してランダムな整数を生成する「generateNumber」メソッドからコールバックを取得しました。この反復は非常に大きくなる可能性があります。したがって、ここでのデリゲートは、メソッドでランダムな整数が生成されるたびにコールバックを取得するために使用されます。
C#のマルチキャストデリゲートとは何ですか?
代理人は、いくつかの異なる方法を指すことができます。いくつかの異なるメソッドを指すデリゲートは、マルチキャストデリゲートと呼ばれます。 「+」記号(演算子)は、デリゲートに関数を追加するために使用され、「-」記号(演算子)は、デリゲートに接続されている既存の関数を削除するために使用されます。
マルチキャストデリゲートは、それが指す関数を呼び出し、同じタイプの関数のみを組み合わせてマルチキャストデリゲートを形成できます。これを使用して、単一のデリゲートを呼び出すことによって呼び出す必要のあるメソッドのリストを作成できます。
これを理解するための簡単なプログラムを見てみましょう。
プログラム
public class Program { delegate void IntegerCounter(int n); public static void method_A(int a) { a = a + 5; Console.WriteLine('the value of first method {0}', a); } public static void method_B(int b) { b = b * 5; Console.WriteLine('the value of second method {0}', b); } public static void Main(string() args) { //creating instance of the delegate IntegerCounter x; IntegerCounter y = new IntegerCounter(method_A); IntegerCounter z = new IntegerCounter(method_B); x = y; x += z; x(10); Console.ReadLine(); } }
出力
最初の方法5の値
2番目の方法の値50
上記のプログラムでは、デリゲートIntegerCounterを宣言しました。次に、整数値に対して特定の操作を実行する2つの異なるメソッドを作成しました。次に、mainメソッドで、定義された両方のメソッドのデリゲートを初期化しました。
最高のウイルス除去は何ですか
次に、最初にデリゲートオブジェクトを使用して、最初に初期化されたデリゲートメソッドをポイントし、その後、「+」記号を使用してデリゲートをマルチキャストし、別のメソッドをポイントしました。次に、整数パラメーターを渡すと、両方のメソッドが同じパラメーターを受け取り、実行されます。
結論
デリゲートは関数へのポインターです。デリゲートを使用するメソッドは、同じパラメーターと戻り値の型を持っている必要があります。
デリゲートは、関数と同様に宣言でき、同様に呼び出すこともできます。マルチキャストデリゲートとは、デリゲートを使用して複数のメソッドを指し、プラス「+」演算子を使用してマルチキャストを使用する場合です。
=> ここでC#トレーニングチュートリアルのシリーズ全体を探索する
推奨読書
- ログを使用したSeleniumスクリプトのデバッグ(Log4jチュートリアル)– Seleniumチュートリアル#26
- 効率的なSeleniumスクリプティングとトラブルシューティングシナリオ– Seleniumチュートリアル#27
- 最初のWebDriverスクリプトの実装– Selenium WebDriverチュートリアル#10
- Eclipseを使用したWebDriver全体のセットアップとインストール– Seleniumチュートリアル#9
- Selenium WebDriverの概要– Seleniumチュートリアル#8
- ジェネリックとテストスイートの作成– Seleniumチュートリアル#22
- SoapUI Groovyスクリプトで例外を処理する方法– SoapUIチュートリアル#11
- Seleniumを介してTestLinkテストケースの実行ステータスをリモートで更新する方法–チュートリアル#3