[C# 함수형 프로그래밍] C# 대리자 결합 (멀티캐스트 대리자)
- C#/C# 문법
- 2021. 12. 2. 21:08
참조
- C# 으로 배우는 함수형 프로그래밍
- https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/delegates/
- https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/delegates/how-to-combine-delegates-multicast-delegates
대리자 결합(멀티캐스트 대리자)
- 대리자 객체의 유용한 속성은 + 연산자를 사용하여 하나의 대리자 인스턴스에 여러 개체를 할당할 수 있다는 것입니다.
- 멀티캐스트 대리자는 할당된 대리자 목록을 포함합니다.
- 멀티캐스트 대리자가 호출되면 목록에 있는 대리자가 순서대로 호출됩니다.
- 같은 형식의 대리자만 결합할 수 있습니다.
-
연산자는 멀티캐스트 대리자에서 구성 요소 대리자를 제거하는 데 사용할 수 있습니다.
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
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] Dictionary ContainsKey vs TeyGetValue 성능 차이 (0) | 2021.12.07 |
---|---|
[C#] NuGet Package 설정 파일 packages.config vs PackageReference 차이 (0) | 2021.12.06 |
[C# 함수형 프로그래밍] C# 간단한 대리자(delegate) (0) | 2021.12.02 |
[C# 함수형 프로그래밍] C# 대리자(delegate) (0) | 2021.12.02 |
[C# 함수형 프로그래밍] C# 커링, 논커링 (2) | 2021.12.01 |
이 글을 공유하기