ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 12주차 3일 기술면접 대비
    개발일지/스파르타 코딩클럽 부트캠프 2024. 7. 5. 09:54

     

    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, 12, 35

    델리게이트는 구독해놓은 함수를 모두 호출한다. 처음에 Add를 먼저 구독시켜 3, 4를 더한 결과를 출력하고

    그 후 Multiply를 구독시켜 7, 5 의 더한 값과 곱한 값을 출력한다.

     

    2. 같은 방식으로 동작한다.

    이유는 Func<> 는 기본적으로 앞의 두 값을 이용하여 뒤의 값으로 결과를 나타내는 형태의 델리게이트이다.

    따라서 앞의 int 3, 4와 7, 5 를 가지고 결과값을 가져오기 때문에 같은 결과가 나온다.

     

    3. 델리게이트를 사용하여 메서드를 매개변수로 전달하면 필요한 메서드들을 미리 모두 구독시켜놓고

    특정 값을 한 번의 전달로 한 번에 구독된 메서드를 다 사용할 수 있는 장점이 있다.

     

    설명문제

     

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

    1. 콜백이란 피호출자가 호출자를 다시 호출하는 것을 말하는데, 풀어서 설명해보면 호출자가 피호출자를 호출하고

    할 일을 하다가 때가 되면 피호출자가 다시 호출자를 호출하는 것을 말한다(?), 보통 인풋시스템을 사용할 때 많이 사용했던 것 같다.

     

    2. 델리게이트란 간단하게는 메서드를 변수처럼 쓰기위해서 사용한다. 위의 콜백과 연관지어서 보면 대리자로써 콜백의

    중간과정에서 도와주는 역할이라고 볼 수 있다.

     

    3. event는 클래스 내에서 특정한 일이 일어났을 때 외부의 가입자(subscriber)들에게 알려주는 기능을 한다.

    클래스 내에서 일종의 필드처럼 정의된다.

     

    4. UnityAction 과 UnityEvent, 그리고 Func와 Action이 있다. 

    UnityAction : 파라미터가 없는 델리게이트

    UnityEvent : 유니티에서 제공하는 이벤트 시스템

    Func : 반환값이 있는 델리게이트

    Action : 반환값이 없는 델리게이트 

     

     

     

Designed by Tistory.