C#의 콜백
오늘 우리는 C#에서 콜백
이 무엇인지 살펴보고 작동 방식을 이해하기 위해 몇 가지 코드를 살펴볼 것입니다.
C#
에서 콜백
이란 무엇입니까?
콜백
은 나중에 실행하는 다른 코드 블록에 인수로 전달된 일부 코드를 나타냅니다. 두 가지 유형은 다음과 같습니다. 동기(즉시) 및 비동기(지연) 콜백.
동기식 콜백은 즉시 작동합니다. 즉, 함수가 호출되자마자 발생합니다. 비동기(지연) 콜백은 함수가 반환된 후에 자주 발생합니다.
짐작할 수 있듯이 특정 이벤트가 발생하면 이 함수를 호출하는 경향이 있는 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);
}
}
그래서 우리는 두 개의 클래스를 만들었습니다. 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#
에서 대리자
사용
대리자
는 서명과 일치하는 메서드를 가리키는 경향이 있으며 둘 다에 정의된 매개 변수를 사용하거나 사용하지 않고 해당 함수를 호출할 수 있습니다. 예를 들어 send_back()
과 callbackMethod()
라는 두 개의 함수가 있고 그 중 하나가 delegate
가 되기를 원한다고 말할 수 있습니다.
callbackMethod()
는 대리인
입니다. 따라서 다음과 같이 코드를 작성할 수 있습니다.
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
는 메소드를 가리키는 handle
에 의해 인스턴스화된 send_back
이며 올바른 매개변수로 메소드를 호출합니다. 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