면접질문

기술면접 - 콜백이란 무엇인가요? 사용해봤는지?

작성자 정보

  • 마스터 작성
  • 작성일

컨텐츠 정보

본문

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#에서 콜백을 사용하면 비동기 작업, 이벤트 처리 등 다양한 상황에서 코드의 실행 순서를 효율적으로 관리할 수 있습니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


새댓글


알림 0