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