delegate(델리게이트)는 C#에서 메서드 참조를 저장하고 호출할 수 있는 형식입니다. 델리게이트는 메서드를 변수처럼 취급할 수 있게 해주며, 특히 동적 메서드 호출이나 이벤트 처리에 유용하게 사용됩니다.
delegate int MyDelegate(int x, int y); // 반환 타입: int, 매개변수: (int x, int y)
using System;
class Program
{
// 델리게이트 선언
delegate int MyDelegate(int x, int y);
static void Main()
{
// 델리게이트 인스턴스 생성 (Add 메서드 참조)
MyDelegate del = Add;
// 델리게이트 호출
int result = del(3, 5);
Console.WriteLine($"Result: {result}"); // 출력: Result: 8
}
static int Add(int a, int b)
{
return a + b;
}
}
using System;
class Program
{
delegate int MyDelegate(int x, int y);
static void Main()
{
MyDelegate del = Add; // Add 메서드 참조
Console.WriteLine(del(3, 5)); // 출력: 8
del = Multiply; // Multiply 메서드 참조
Console.WriteLine(del(3, 5)); // 출력: 15
}
static int Add(int a, int b)
{
return a + b;
}
static int Multiply(int a, int b)
{
return a * b;
}
}
using System;
class Program
{
delegate void MyDelegate(string message);
static void Main()
{
MyDelegate del = PrintMessage1;
del += PrintMessage2; // 두 번째 메서드 추가
// 두 메서드 실행
del("Hello, Delegate!");
}
static void PrintMessage1(string message)
{
Console.WriteLine($"Message1: {message}");
}
static void PrintMessage2(string message)
{
Console.WriteLine($"Message2: {message}");
}
}
출력
Message1: Hello, Delegate!
Message2: Hello, Delegate!
Func<int, int, int> add = (a, b) => a + b; // 두 정수를 더하는 람다 식
Console.WriteLine(add(3, 5)); // 출력: 8
Action<string> printMessage = message => Console.WriteLine(message);
printMessage("Hello, Action!"); // 출력: Hello, Action!