[C# 함수형 프로그래밍] C# 대리자 결합 (멀티캐스트 대리자)

참조



대리자 결합(멀티캐스트 대리자)

  • 대리자 객체의 유용한 속성은 + 연산자를 사용하여 하나의 대리자 인스턴스에 여러 개체를 할당할 수 있다는 것입니다.
  • 멀티캐스트 대리자는 할당된 대리자 목록을 포함합니다.
  • 멀티캐스트 대리자가 호출되면 목록에 있는 대리자가 순서대로 호출됩니다.
  • 같은 형식의 대리자만 결합할 수 있습니다.
  • - 연산자는 멀티캐스트 대리자에서 구성 요소 대리자를 제거하는 데 사용할 수 있습니다.
using System;

namespace interfaceTest
{
    class Program
    {
        public delegate void CalculatorDelegate(int number1, int number2);

        static void Main(string[] args)
        {
            CalculatorDelegate addDelegate, subDelegate, mulitDelegate, divisionDelegate;

            addDelegate = Add;
            subDelegate = Substract;
            mulitDelegate = Multiply;
            divisionDelegate = Division;

            // 멀티 캐스트 대리자
            CalculatorDelegate multiCastDelegate = addDelegate + subDelegate;
            multiCastDelegate += mulitDelegate;
            multiCastDelegate += divisionDelegate;

            Console.WriteLine($"멀티 캐스트 대리자 실행");
            multiCastDelegate(10, 2);

            Console.WriteLine();
            Console.WriteLine();

            // 멀티 캐스트 대리자 해제
            Console.WriteLine($"멀티 캐스트 대리자 해제");
            multiCastDelegate -= subDelegate;
            multiCastDelegate(10, 2);
        }

        public static void Add(int number1, int number2)
        {
            Console.WriteLine($"{number1} + {number2} = {number1 + number2}");
        }

        public static void Substract(int number1, int number2)
        {
            Console.WriteLine($"{number1} - {number2} = {number1 - number2}");
        }

        public static void Multiply(int number1, int number2)
        {
            Console.WriteLine($"{number1} * {number2} = {number1 * number2}");
        }

        public static void Division(int number1, int number2)
        {
            Console.WriteLine($"{number1} / {number2} = {number1 / number2}");
        }
    }
}


실행 결과

멀티 캐스트 대리자 실행
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5


멀티 캐스트 대리자 해제
10 + 2 = 12
10 * 2 = 20
10 / 2 = 5
  • 위처럼 +, - 연산을 통해서 대리자를 연속적으로 사용 혹은 제거할 수 있습니다.
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY