그러냐

델리게이트(delegate) 활용_1 본문

c#

델리게이트(delegate) 활용_1

관절분리 2016. 1. 28. 11:23
반응형

 

using System;
using System.Collections;

namespace FirstCon
{
    class Program
    { 
        public static int Add(int a, int b) { return a+b; }
        public static int Mul(int a, int b) { return a*b; }
        static void Main()
        {
            int a = 3, b = 5;
            int o;
            Console.Write("어떤 연산을 하고 싶습니까? (1: 덧셈, 2: 곱셈) " );
            o = Convert.ToInt32(Console.ReadLine());
            switch(o)
            {
                case 1:
                    Console.WriteLine("결과는 {0} 입니다.", Add(a, b));
                    break;
                case 2:
                    Console.WriteLine("결과는 {0} 입니다.", Mul(a, b));
                    break;
            }
        }
       
    }
}

 

/ *

 사용자에게 어떤 메서드를 호출할 것인가를 키도브로 입력 받아 switch 문으로 두 메서드 중 하나를 선택하여 호출한다. 선택해야 할 메서드가 두 개 정도라면 switch 문도 쓸만하고 if문이나 삼항 조건 연산자로 더 짧게 만들 수도 있다. 그러나 수십 개의 메서드 중 하나를 호출해야 한다면 switch 문의 case 를 일일이 작성하는 것은 속도도 느릴 뿐만 아니라 프로그램도 비대해지고 보기에도 좋지 않다.

다음은 델리게이트를 활용한 코드이다.

*/

using System;
using System.Collections;

namespace FirstCon
{
    delegate int IntOp(int a, int b);
    class Program
    { 
        public static int Add(int a, int b) { return a + b; }
        public static int Mul(int a, int b) { return a * b; }
        static void Main()
        {
            IntOp[] arOp = { Add, Mul };
            int a = 3, b = 5;
            int o;
            Console.Write("어떤 연산을 하고 싶습니까? (1: 덧셈, 2: 곱셈) ");
            o = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("결과는 {0} 입니다.", arOp[o - 1](a,b));
        }
    }
   
}

반응형