기술면접 - 콜백이란 무엇인가요? 사용해봤는지?
작성자 정보
- 마스터 작성
- 작성일
본문
Q - 콜백이란 무엇인가요? 사용해봤는지?
A - 콜백이란 비동기 프로그래밍에서 작업이 완료된 후에 실행할 코드를 말합니다.
[GPT]
C#에서의 콜백(callback)은 다른 메서드의 완료 시점에 호출되는 메서드를 의미합니다. 콜백은 주로 비동기 프로그래밍에서 사용되며, 어떤 작업이 완료된 후에 실행할 코드를 지정할 때 유용합니다. 콜백을 사용하면 비동기 작업의 결과를 처리하거나, 특정 작업이 완료된 후 추가 작업을 수행할 수 있습니다.
C#에서 콜백을 구현하는 방법은 여러 가지가 있지만, 대표적으로 델리게이트(delegate), 이벤트(event), 람다식(lambda expression)을 사용하는 방법이 있습니다.
델리게이트를 이용한 콜백
델리게이트는 메서드를 변수처럼 할당할 수 있는 타입으로, 메서드의 참조를 가지고 있어서 다른 메서드의 파라미터로 전달하거나, 변수에 할당할 수 있습니다.
public delegate void CallbackDelegate(string message);
public class Example
{
public void Process(CallbackDelegate callback)
{
// 어떤 처리를 한 후
callback("처리 완료");
}
}
class Program
{
static void Main(string[] args)
{
Example example = new Example();
example.Process(CallbackMethod);
}
static void CallbackMethod(string message)
{
Console.WriteLine(message);
}
}
이벤트를 이용한 콜백
이벤트는 특정 사건이 발생했을 때 알림을 받기 위해 사용되는 델리게이트의 한 형태입니다. 이벤트를 사용하면 클래스의 사용자에게 어떤 사건이 발생했음을 알릴 수 있습니다.
public class Example
{
public event EventHandler ProcessCompleted;
public void Process()
{
// 처리가 완료되면 이벤트 발생
OnProcessCompleted(EventArgs.Empty);
}
protected virtual void OnProcessCompleted(EventArgs e)
{
ProcessCompleted?.Invoke(this, e);
}
}
class Program
{
static void Main(string[] args)
{
Example example = new Example();
example.ProcessCompleted += Example_ProcessCompleted;
example.Process();
}
private static void Example_ProcessCompleted(object sender, EventArgs e)
{
Console.WriteLine("처리 완료");
}
}
람다식을 이용한 콜백
람다식을 사용하여 더 간결하게 콜백 메서드를 정의할 수 있습니다. 람다식은 익명 메서드를 생성하는 방법입니다.
public class Example
{
public void Process(Action<string> callback)
{
// 어떤 처리를 한 후
callback("처리 완료");
}
}
class Program
{
static void Main(string[] args)
{
Example example = new Example();
example.Process(message => Console.WriteLine(message));
}
}
C#에서 콜백을 사용하면 비동기 작업, 이벤트 처리 등 다양한 상황에서 코드의 실행 순서를 효율적으로 관리할 수 있습니다.
관련자료
-
이전
-
다음