델리게이트와 이벤트

|

사용 하는 방법만

 간단히 보자..


namespace CSharpExample
{
    public delegate void Defeat();//이벤트 등록을위한 델리게이트
    public class Zealot
    {
        public void Attack()
        {
            Console.WriteLine("Zealot Attacked !!");
        }
    }
    public class Dragon
    {
        public void Attack()
        {
            Console.WriteLine("Dragon Attacked !!");
        }
    }
    public class Carrier
    {
        public void Attack()
        {
            Console.WriteLine("Carrier intercepter Attacked !!");
        }
    }
    public class Group
    {
        private event Defeat EnemyDetected; //이벤트 델리게이트 필드

        public void AddCombatUnit(Defeat unit)
        {
            EnemyDetected += unit;//이벤트시 실행 함수 추가 부분
        }
        public void AttackEnemy()
        {
            EnemyDetected();//이벤트 실행.. 등록되있는 모든 함수 실행한다
        }//만약에 중간에 예외처리로 thorw된다면 그 다음 이벤트는 수행 되지 않음
    }
    public class Starcraft4
    {
        [STAThread]
        public static void Main()
        {
            Zealot unit10 = new Zealot();
            Dragon unit20 = new Dragon();
            Carrier unit30 = new Carrier();

            Group group1 = new Group();

            group1.AddCombatUnit(new Defeat(unit10.Attack));//이벤트에 추가
            group1.AddCombatUnit(new Defeat(unit20.Attack));//이벤트에 추가
            group1.AddCombatUnit(new Defeat(unit30.Attack));//이벤트에 추가

            group1.AttackEnemy();//이벤트 발생(실행한다)
        }
    }
}

And