C# でのコールバック
今日は、C# での callback
とは何かを調べてから、それがどのように機能するかを理解するためにいくつかのコードを見ていきます。
C#
の コールバック
とは
callback
は、後で実行する別のコード ブロックに引数として渡されるコードを参照します。 そのタイプの 2つが含まれます。 同期 (即時) および非同期 (遅延) コールバック。
同期コールバックはすぐに機能します。つまり、関数が呼び出されるとすぐに発生します。 関数が戻ると、非同期 (遅延) コールバックが発生することがよくあります。
ご想像のとおり、特定のイベントが発生すると、この関数を呼び出す傾向がある I/O 操作で機能します。
C# では、関数ポインターであり、コールバック
として使用できるデリゲート
と呼ばれるものを使用します。
したがって、関数をパラメーターとして受け取るメソッドを定義できます。このメソッドは、メッセージまたは関数に返したいものを関数にコールバックする傾向があります。 以下の例を見てみましょう。
using System;
public class A {
static void Main(String[] args) {
B func = new B();
func.send_back(callbackMethod);
}
static void callbackMethod(int number) {
Console.WriteLine("The number is: " + number);
}
}
public class B {
public void send_back(Action<int> Callback) {
Callback(4);
}
}
したがって、2つのクラスを作成しました。 A
とB
。 A
には Main
関数が定義されており、クラス B
のオブジェクトをインスタンス化します。
B
では、関数をパラメーターとして受け取り、その関数を呼び出すメソッドを作成しました。 したがって、func
は関数で呼び出され、B
はパラメータ 4
で関数を呼び出し、この数値を出力します。
出力:
The number is: 4
上記の例の delegate
は、関数 send_back()
です。 event
は send_back()
の呼び出しであり、callback
は send_back
メソッド内で呼び出される関数です: callbackMethod()
。
B
メソッド内で既にその関数に callback
という名前を付けています。
C#
で デリゲート
を使用する
delegate
は、その署名に一致するメソッドを指す傾向があり、両方で定義されたパラメーターの有無にかかわらずその関数を呼び出すことができます。 たとえば、send_back()
と callbackMethod()
という 2つの関数があり、そのうちの 1つを delegate
にしたいとします。
callbackMethod()
は delegate
です。 したがって、次のようにコードを書くことができます。
using System;
public delegate void send_back(int num);
public class B {
public void send_back(Action<int> Callback) {
Callback(4);
}
}
public class Program {
static void Main(String[] args) {
B func = new B();
send_back handle = callbackMethod;
handle(4);
}
static void callbackMethod(int number) {
Console.WriteLine("The number is: " + number);
}
}
delegate
は send_back
であり、メソッドを指す handle
によってインスタンス化され、正しいパラメーターでメソッドを呼び出します。 handle(4)
が callbackMethod(4)
と等しいことに気付くかもしれません。
これも、Lambda
関数に非常に似ているようです。 完全なコードを以下に示します。
using System;
class classer {
public class A {
// DELEGATE METHOD
public delegate void send_back(int num);
static void Main(String[] args) {
B func = new B();
send_back handle = callbackMethod;
handle(4);
}
static void callbackMethod(int number) {
Console.WriteLine("The number is: " + number);
}
}
// THE CLASS B (THE FIRST CALLBACK METHOD)
public class B {
public void send_back(Action<int> Callback) {
Callback(4);
}
}
}
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub