면접 대비 꾸준 실습 03. 콜백, delegate, event

유승아·2024년 7월 3일

내일배움캠프

목록 보기
68/69

💡 질문에 답해보고 직접 확인해보는 시간을 가집시다.

using System;

class Program
{
    // 델리게이트 정의
    public delegate int MyCallback(int a, int b);

    // 덧셈 메서드
    static int Add(int a, int b)
    {
        return a + b;
    }

    // 곱셈 메서드
    static int Multiply(int a, int b)
    {
        return a * b;
    }

    static void Main(string[] args)
    {
        MyCallback MathOperation;
        
        MathOperation = Add;
        
        Console.WriteLine(MathOperation(3, 4));
        
        MathOperation = Multiply;
        
        Console.WriteLine(MathOperation(7, 5));
    }
}
  1. 위 코드의 출력 결과는 무엇인가요? 그 이유는 무엇인가요?

    • 7
      35
      델리게이트가 처음엔 Add 메서드를 참조하고, 두번째에는 Multiply 메서드를 참조하기 때문입니다.
  2. 위 코드의 Main 함수를 아래처럼 바꿔도 같은 방식으로 동작할까요? 그 이유는 무엇인가요?

    • 네. Func<int, int, int> 순서대로 첫 번째, 두 번째 int는 매개변수, 세 번째 int는 반환 타입이기 때문에 같은 방식으로 동작합니다.
static void Main(string[] args)
{
    Func<int, int, int> MathOperation;

    MathOperation = Add;

    Console.WriteLine(MathOperation(3, 4));

    MathOperation = Multiply;

    Console.WriteLine(MathOperation(7, 5));
}
  1. 델리게이트를 사용하여 메서드를 매개변수로 전달하는 장점은 무엇인가요?
    • 코드의 유연성과 재사용성이 높아집니다. 그리고 콜백을 구현하는 데 유용합니다.

💡 질문을 직접 설명해보고, 모르는 부분이 있다면 알아보는 시간을 가집시다.

  1. 콜백이란 무엇인가요? 콜백을 사용해본 경험이 있을까요?
    • 특정 작업이 완료된 후 호출되는 메서드입니다.
      이벤트 구독 같은 상황에서 사용해 보았습니다.
  2. 델리게이트(delegate; 대리자)란 무엇인가요?
    • 메서드 참조를 저장하고 호출할 수 있게 해주는 타입입니다.
      델리게이트를 통해서 메서드를 변수처럼 전달하거나 호출할 수 있습니다.
  3. C#의 event란 무엇인가요?
    • 특정 동작이나 상태 변화가 발생했음을 알리는 메커니즘입니다.
      특정 조건이 충족되었을 때 하나 이상의 이벤트 핸들러가 호출됩니다.
  4. Unity에서 사용하는 델리게이트 혹은 이벤트에는 어떤 것이 있나요?

0개의 댓글