TIL(2024,07,03)기술 면접 대비

김보근·2024년 7월 3일

Unity

목록 보기
30/113

기술 면접 대비

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. 위 코드의 출력 결과는 무엇인가요? 그 이유는 무엇인가요?
2. 위 코드의 Main 함수를 아래처럼 바꿔도 같은 방식으로 동작할까요? 그 이유는 무엇인가요?

static void Main(string[] args)
{
    Func<int, int, int> MathOperation;

    MathOperation = Add;

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

    MathOperation = Multiply;

    Console.WriteLine(MathOperation(7, 5));
}

3. 델리게이트를 사용하여 메서드를 매개변수로 전달하는 장점은 무엇인가요?

답변

  1. 출력결과는 7 , 35

이유: 첫 번째 출력 결과는 Add 메서드가 호출되어 3 + 4 = 7이 출력됩니다.
두 번째 출력 결과는 Multiply 메서드가 호출되어 7 * 5 = 35가 출력됩니다.

  1. 동일하게 작동합니다.

Func<int, int, int> 델리게이트는 두 개의 int 매개변수를 받고 int 값을 반환하는 메서드를 나타냅니다.
Add와 Multiply 메서드는 이 시그니처와 일치하므로, Func<int, int, int> 델리게이트에 할당될 수 있습니다.

설명문제

  1. 콜백이란 무엇인가요? 콜백을 사용해본 경험이 있을까요?
  2. 델리게이트(delegate; 대리자)란 무엇인가요?
  3. C#의 event란 무엇인가요?
  4. Unity에서 사용하는 델리게이트 혹은 이벤트에는 어떤 것이 있나요?

답변

  1. 콜백(Callback)은 특정 이벤트가 발생했을 때 호출되는 함수를 의미합니다. 콜백은 비동기 프로그래밍 패턴에서 많이 사용되며, 어떤 작업이 완료되었을 때 그 결과를 처리하는 용도로 활용됩니다. 예를 들어, 파일 다운로드가 완료되면 다운로드 완료 콜백 함수를 호출하여 다운로드된 파일을 처리할 수 있습니다. 아직 사용해본 경험은 없습니다.

  2. 델리게이트(Delegate)는 메서드를 캡슐화하는 데이터 형식입니다. 델리게이트를 사용하면 메서드를 변수처럼 다룰 수 있어 코드의 유연성과 재사용성이 높아집니다. 델리게이트는 메서드의 시그니처(매개변수와 반환 타입)와 일치해야 하며, 델리게이트 변수에 메서드를 할당하거나 델리게이트 변수를 매개변수로 전달할 수 있습니다.

  3. C#의 이벤트(Event)는 객체 지향 프로그래밍에서 중요한 개념 중 하나입니다. 이벤트는 특정 상황이 발생했음을 알리는 메커니즘입니다. 이벤트는 델리게이트를 사용하여 구현되며, 이벤트 발생 시 등록된 이벤트 핸들러가 호출됩니다. 이를 통해 객체 간 느슨한 결합을 달성할 수 있습니다.

  4. Unity에서는 다음과 같은 델리게이트와 이벤트를 사용합니다:
    UnityAction: 매개변수 없이 void를 반환하는 델리게이트
    UnityAction T: 하나의 매개변수와 void를 반환하는 델리게이트
    UnityEvent: UnityAction 델리게이트를 기반으로 한 이벤트
    UnityEvent T: UnityAction T 델리게이트를 기반으로 한 이벤트
    MonoBehaviour.OnEnable(), MonoBehaviour.OnDisable() 등의 생명 주기 이벤트
    InputSystem의 입력 이벤트
    EventSystem의 UI 이벤트

profile
게임개발자꿈나무

0개의 댓글