Exemple #1
0
        static void DelegateExam(int a, int b)
        {
            Arithmetic        obj = new Arithmetic();
            ArthmeticDelegate dgtCalc;
            PrintInfoDelegate dgtPrint = new PrintInfoDelegate(obj.PrintInfo);
            WhoAreYouDelegae  dgtStatic, dgtNormal, dgtCommon;

            dgtCalc = new ArthmeticDelegate(obj.Add);
            int sum = dgtCalc(a, b);

            dgtPrint($"{a} + {b} = {sum}");

            dgtCalc = new ArthmeticDelegate(obj.Sub);
            int sub = dgtCalc(a, b);

            dgtPrint($"{a} - {b} = {sub}");

            dgtCalc = new ArthmeticDelegate(obj.Mul);
            int mul = dgtCalc(a, b);

            dgtPrint($"{a} * {b} = {mul}");

            dgtCalc = new ArthmeticDelegate(obj.Div);
            int div = dgtCalc(a, b);

            dgtPrint($"{a} / {b} = {div}");

            // 정적 델리게이트 호출시 [클래스명.델리게이트명]으로 호출
            dgtStatic = new WhoAreYouDelegae(Arithmetic.AreYouStatic);
            dgtNormal = new WhoAreYouDelegae(obj.AreYouNormal);
            dgtStatic();
            dgtNormal();

            Console.WriteLine("+/-연산자를 통한 대리자등록");
            dgtCommon = dgtStatic;
            dgtCommon();

            Console.WriteLine("기존(static)의 대리자에 또 하나(normal)의 대리자 등록 ==>");
            dgtCommon += dgtNormal;
            dgtCommon();

            Console.WriteLine("기존(static/normal)의 대리자 중 하나(static)의 대리자 제거");
            dgtCommon -= dgtStatic;
            dgtCommon();
        }
Exemple #2
0
 /// <summary>
 /// Program entry point.
 /// </summary>
 /// <param name="args">progrm arguments.</param>
 public static void Main(string[] args)
 {
     Console.WriteLine($"Sum of 2 and 2 is {Arithmetic.Add(2, 2)}.");
 }