프로그래밍 문법/C#

delegate, event

씩씩한 IT블로그 2024. 12. 2. 18:15
반응형

[delegate]

public delegate void DelegatePlus(int coin, int point, int exp); 
public class Program
{
    static int userCoin = 0;
    static int userPoint = 0;
    static int userExp = 0; 
    static void PlusCoin(int coin, int point, int exp)
    {
        userCoin = userCoin + coin;
    }    static void PlusPoint(int coin, int point, int exp)
    {
        userPoint = userPoint + point;
    }    static void PlusExp(int coin, int point, int exp)
    {
        userExp = userExp + exp;
    }    static void Main(string[] args)
    {
        DelegatePlus killMonster = PlusCoin;
        killMonster += PlusPoint;
        killMonster += PlusExp;        killMonster(100, 30, 40);
    }
}

[event]

  • 클래스 외부에서 직접 호출할 수 없으며 해당 클래스의 메서드 내에서만 호출 가능하다.
  • interface 내부에서 선언할 수 있다
  • using System;
    
    class Program
    {
        delegate void EventHandler(string message);
    
        class Notifier
        {
            public event EventHandler Execute;
    
            public void Notifiy()
            {
                Execute("Event");
            }
        }
    
        static void Print(string str)
        {
            Console.WriteLine(str);
        }
    
        static void Main(string[] args)
        {
            Notifier notifier = new Notifier();
            notifier.Execute += Print;
    
            // notifier.Execute(""); 불가능!
            notifier.Notifiy();
        }
    }
     

1. delegate => eventHandler

2. event 함수, 로직은 없고 이벤트에 추가될 함수들의 파라미터가 정의된다=> execute

3. event 함수에 추가된 실제 함수 => print

4. event함수가 쓰인 클래스의 매서드, 실행할때 사용된다 => notify

반응형