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(); }
/// <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)}."); }