Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Calcultor c = new Calcultor(Add);

            Console.WriteLine(c(10, 20));
            c = Multiply;
            Console.WriteLine(c(10, 20));
        }
Ejemplo n.º 2
0
    delegate int MyDelegateType(int a, int b);  // delegate는 Type이다. (int, float 처럼)

    static void Main(string[] args)
    {
        int Plus(int a, int b)
        {
            return(a + b);
        }

        int Minus(int a, int b)
        {
            return(a - b);
        }

        // 2. 델리게이트 참조변수 생성
        MyDelegateType Callback;  // Callback : MyDelegate의 델리게이트 인스턴스

        // 3. 델리게이트의 인스턴스를 생성, 이때 델리게이트가 참조할 메소드를 매개변수로 넘긴다.
        Callback = new MyDelegateType(Plus);  // 메소드를 인자로 갖는 타입의 인스턴스 생성

        // 4. 델리게이트를 호출한다.
        Console.WriteLine(Callback(3, 5));  // Plus(3, 5)

        Callback = new MyDelegateType(Minus);
        Console.WriteLine(Callback(7, 5));  // Minus(7, 5)


        Calcultor      calc = new Calcultor();
        MyDelegateType calcDelegate;                  // 1. 델리게이트 참조변수 생성

        calcDelegate = new MyDelegateType(calc.Plus); // 2. 델리게이트 인스턴스 생성(메소드 참조)
        Console.WriteLine(calcDelegate(3, 5));        // 3. 델리게이트 사용

        calcDelegate = new MyDeleMyDelegateTypegate(Calcultor.Minus);
        Console.WriteLine(calcDelegate(7, 5));

        // 델리게이트 인스턴스를 생성할 때 생성자를 사용하지 않고, 참조할 메소드명을 이용할 수 있다.
        calcDelegate  = calc.Plus;
        calcDelegate += Calcultor.Minus;  // + 연산자로 델리게이트를 연결할 수 있다.
        calcDelegate(1, 2);
    }