Programming/C# - Window

C#/ 대리자(델리게이트, delegate)k

esoog Polaris 2023. 6. 28. 13:58
반응형

# 근데 델리게이트를 왜 쓰지?

 

원래 함수를 파라미터로 보내기 위해서는 함수의 리턴 을 보내야 한다.

근데; 함수를 각각 값을 받아서 변수를 할당해서 보내기에는...

코드가 복잡해진다! 그래서 말 그대로 대리자라는 것을 만들어 함수를 대리하게 만들어 사용한다.

이게 가장 큰 이유.

 

 

 

 

 

# 이해를 위한 추가 델리게이트 정리 자료

 

class Program
{
    static void Main(string[] args)
    {
        new Program().Test();
    }


    // 1.
    // 델리게이트 대상이 될 어떤 메서드1
    int StringToInt(string s)
    {
        return int.Parse(s);
    }
    // 델리게이트 대상이 될 어떤 메서드2
    int StringToInt2(string s)
    {
        return int.Parse(s);
    }


    // 델리게이트 정의
    delegate int MyDelegate(string str);
    // 제일 중요한 건, 델리게이트의 대상이 될 메서드와
    // 1.파라미터 갯수, 2.매개변수 타입, 3.리턴 타입,
    // 이 모두 일치해야 사용 가능.


    // 델리게이트를 전달 받을 메서드
    void Run(MyDelegate m)
    // 델리게이트 타입의 매개변수를 파라미터로 설정
    {
        int i = m("123");
        // 델리게이트에 값 전달

        Console.WriteLine(i);
    }

    // 전체 실행 관리 클래스
    void Test()
    {
        //델리게이트 객체 생성
        MyDelegate callback = new MyDelegate(StringToInt);
        // 매개변수로 원하는 메서드를 집어 넣음.

        //델리게이트 객체를 메서드로 전달
        Run(callback);
    }
}
728x90