반응형
[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
반응형