ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 대리자(Delegate)와 이벤트(Event) 처리
    C# 2023. 3. 8. 22:45

    대리자(Delegate)

    C#에서 대리자(Delegate)다른 메서드를 참조하는 데이터 형식입니다. 대리자는 메서드를 참조하기 위해 사용되며, 대리자가 참조하는 메서드를 대신 호출할 수 있습니다. 대리자는 이벤트 처리, 비동기 처리, 콜백 등과 같은 기능을 구현하는 데 매우 유용합니다.

     

    예시 코드 : 

    // 예시 코드
    // 대리자 선언
    public delegate int Calculate(int x, int y);
    
    public class Calculator
    {
        // 더하기 메서드
        public int Add(int x, int y)
        {
            return x + y;
        }
    
        // 빼기 메서드
        public int Subtract(int x, int y)
        {
            return x - y;
        }
    }
    
    public class Program
    {
        static void Main(string[] args)
        {
            Calculator calculator = new Calculator();
    
            // 더하기 메서드를 참조하는 대리자 생성
            Calculate operation = new Calculate(calculator.Add);
    
            // 대리자를 사용하여 더하기 메서드 호출
            int result = operation(5, 10);
    
            Console.WriteLine(result);
        }
    }

     

    위 예시 코드에서는 대리자를 사용하여 더하기 메서드를 참조하고 호출하는 방법을 보여줍니다. 대리자는 더하기 메서드를 참조하기 위해 선언되고, 이 메서드를 대신 호출할 대리자를 생성합니다. 이러한 방법을 사용하여 대리자를 통해 메서드를 호출하면 메서드를 직접 호출하는 것보다 더욱 유연하게 동작할 수 있습니다.


    이벤트(Event)

    C#에서 이벤트(Event)는 객체 간의 상호 작용에서 발생하는 사건을 나타내는 기능입니다. 이벤트는 객체에서 발생하며, 이벤트를 처리하는 메서드를 이벤트 핸들러(Event Handler)라고 합니다. 이벤트 핸들러는 이벤트 발생 시 호출되어 처리합니다.

     

    예시 코드 :

    // 예시 코드
    // 버튼 클래스
    public class Button
    {
        // Click 이벤트 선언
        public event EventHandler Click;
    
        // Click 이벤트 발생 시 호출되는 메서드
        public void OnClick()
        {
            // 이벤트 핸들러 호출
            Click?.Invoke(this, EventArgs.Empty);
        }
    }
    
    public class Program
    {
        static void Main(string[] args)
        {
            Button button = new Button();
    
            // Click 이벤트에 대한 이벤트 핸들러 등록
            button.Click += Button_Click;
    
            // Click 이벤트 발생
            button.OnClick();
        }
    
        // Click 이벤트를 처리하는 메서드
        private static void Button_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Button clicked");
        }
    }


    위 예시 코드에서는 이벤트 처리를 구현하는 방법을 보여줍니다. `Button` 클래스에서 `Click` 이벤트를 선언하고, `OnClick` 메서드에서 이벤트를 발생시킵니다. `Program` 클래스에서는 `Button_Click` 메서드를 이벤트 핸들러로 등록하고, `OnClick` 메서드에서 이벤트가 발생하면 이벤트 핸들러가 호출됩니다. 이러한 방식으로 이벤트를 처리하면 객체 간의 상호 작용에서 매우 유용하게 사용할 수 있습니다.



    따라서, C#에서의 대리자와 이벤트 처리는 객체 간의 상호 작용에서 매우 중요한 기능을 수행합니다. 대리자를 사용하여 메서드를 참조하고 호출하는 기능과 이벤트를 사용하여 객체 간의 상호 작용을 구현할 수 있습니다. 이러한 기능을 적절하게 활용하여, 보다 다양하고 유연한 소프트웨어를 개발할 수 있습니다.

     

     

     

    댓글

Designed by Tistory.