델리게이트가 뭐야?
델리게이트는 마치 리모컨과 같아요. 리모컨은 TV를 켜고 끌 때 사용하는데, 리모컨 버튼을 누르면 실제로는 TV의 특정 기능(전원을 켜거나 끄는 것)을 실행하죠. 델리게이트도 비슷하게, 특정 메서드(함수)를 가리키고 그 메서드를 실행할 수 있도록 해주는 "리모컨"이에요.
왜 사용하는 걸까?
델리게이트는 프로그램에서 여러 개의 메서드를 쉽게 연결하거나 교체해서 사용할 수 있게 해줘요. 마치 리모컨을 통해 TV뿐만 아니라 DVD 플레이어나 오디오 시스템도 조종할 수 있는 것처럼, 델리게이트는 프로그램에서 다른 메서드를 유연하게 호출할 수 있도록 해줍니다.
예를 들어 볼까?
마치 "친구에게 부탁하기"와 같은 상황이라고 생각해 보세요. 친구에게 "숙제를 도와줘"라고 말할 때, 어떤 친구는 수학을 도와주고 다른 친구는 과학을 도와줄 수 있어요. 이때 델리게이트는 어떤 친구가 어떤 과목을 도와줄지 결정하는 역할을 해요.
using System;
public class Program
{
// 델리게이트 선언: 리모컨처럼 작동할 델리게이트
public delegate void SimpleDelegate(string message);
// 메서드 1: 화면에 메시지를 출력
public static void PrintHello(string message)
{
Console.WriteLine("안녕, " + message);
}
// 메서드 2: 화면에 다른 메시지를 출력
public static void PrintGoodbye(string message)
{
Console.WriteLine("잘 가, " + message);
}
public static void Main(string[] args)
{
// 델리게이트 인스턴스에 메서드 연결 (리모컨의 버튼을 설정하는 것과 비슷)
SimpleDelegate myDelegate = PrintHello;
// 델리게이트 호출 (리모컨의 버튼을 누르는 것)
myDelegate("친구");
// 다른 메서드로 델리게이트 변경
myDelegate = PrintGoodbye;
myDelegate("친구");
}
}
코드 설명
- SimpleDelegate: string 매개변수를 받는 메서드를 가리킬 수 있는 리모컨이에요.
- **PrintHello**와 PrintGoodbye: 두 개의 메서드로, 델리게이트가 어떤 메서드를 호출할지 선택할 수 있어요.
- myDelegate = PrintHello: 델리게이트가 PrintHello 메서드를 가리키도록 설정했어요. 이 리모컨을 눌러 PrintHello를 실행할 수 있어요.
- myDelegate("친구"): 델리게이트를 사용해 PrintHello 메서드를 호출해요.
- myDelegate = PrintGoodbye: 이제 델리게이트가 PrintGoodbye 메서드를 가리키게 변경됐어요.
왜 델리게이트가 유용할까?
델리게이트를 사용하면 어떤 메서드를 실행할지 쉽게 바꿀 수 있어서 코드가 더 유연해져요. 마치 리모컨의 버튼 하나만 눌러 TV에서 DVD 플레이어로 전환하듯, 델리게이트는 코드에서 실행할 메서드를 쉽게 변경할 수 있게 해줘요.
'(신)회사 > 개인 공부' 카테고리의 다른 글
ref 와 out 차이 (4) | 2025.02.05 |
---|---|
델리게이트 & 이벤트 (delegate & event) (1) | 2024.11.07 |