C#에서 어느정도의 기초학습이 끝나고 나면 등장하는 녀석입니다.
중급정도의 개발 기술입니다.
델리게이트를 잘 이해하면 개발 수준이 빠르게 높아질 수 있습니다.
그럼 이해하기 쉽게 예제와 함께 설명해 드리겠습니다.
◎ 델리게이트란?
"델리게이트는 메서드를 참조(가리키는)할 수 있는 타입입니다."
즉, 메서드를 변수처럼 다룰 수 있게 해주는거죠.
☞ 비유로 이해하기
델리게이트를 전화번호부로 비유해 보겠습니다.
- 전화번호부에는 이름(델리게이트 변수)이 있고
- 실제 전화번호(메서드 주소)가 저장돼 있죠.
- 우리가 전화번호부를 통해 전화를 걸 듯,
델리게이트를 통해 메서드를 간접적으로 호출할 수 있습니다.
▷ 기본 사용예제
using System;
public class Program
{
// 1. 델리게이트 선언 (string을 받아서 void를 반환하는 메서드를 위한 델리게이트)
delegate void SaySomething(string message);
// 2. 델리게이트가 가리킬 메서드
static void Hello(string msg)
{
Console.WriteLine("안녕: " + msg);
}
static void Main()
{
// 3. 델리게이트 인스턴스 생성 및 메서드 할당
SaySomething say = Hello;
// 4. 델리게이트를 통해 메서드 호출
say("김희선"); // 결과: 안녕: 김희선
}
}
☞ 델리게이트의 장점
- 메서드를 매개변수처럼 넘길 수 있음
- 런타임에 어떤 메서드를 실행할지 바꿀 수 있음
- 이벤트 처리(윈도우 버튼 클릭 등)에 많이 사용됨
- 익명 메서드나 람다식과 함께 쓰면 아주 강력함
▷▷ 실전 팁
델리게이트는 요즘에는 다음 두 가지로 많이 대체되고 있습니다.
- Action : 반환값 없는 델리게이트
- Func : 반환값 있는 델리게이트
Action<string> say = msg => Console.WriteLine(msg);
say("안녕하세요");
Func<int, int, int> add = (a, b) => a + b;
Console.WriteLine(add(3, 4)); // 결과: 7
=> 기호
- 정식 명칭: 람다 연산자(lambda operator)
- 읽는 방법: "이렇게 매핑된다 또는 매핑하라" 또는 "이렇게 동작한다 또는 동작하라" 라고 이해하면 됩니다.
※ 기본구조
(매개변수) => { 실행 코드 }
또는, 코드가 한 줄이면 중괄호 없이 이렇게도 씁니다:
(매개변수) => 결과
예제 1 : List에서 짝수만 가져오기
Func<int, int, int> add = (a, b) => a + b;
Console.WriteLine(add(3, 4)); // 결과
람다식은 이전글에 있습니다.
쉽지만 응용력이 뛰어나고 활용도가 아주 높습니다.
꼭 학습해서 실무에 도움되시길 바랍니다.
--- 참고 ---
C# foreach 와 for 문 LINQ 사용법
Foreach 문 Foreach 는 컬렉션 (배열, 리스트, 테이블 등)을 반복(iterate) 할 때 사용하는 반복문입니다.사용법 foreach (var item in 컬렉션) { // item을 이용한 처리 }예제1: 문자열 리스트 반복 L
kke1404.tistory.com
'IT' 카테고리의 다른 글
C# SWICH 문 예제 (0) | 2025.04.02 |
---|---|
C# 델리게이트 이벤트핸들러 사용 예제 (0) | 2025.03.28 |
C# Clone() 함수 사용법과 예제 (0) | 2025.03.25 |
C# Func 사용법 예제 (0) | 2025.03.25 |
C# foreach 와 for 문 LINQ 사용법 (2) | 2025.03.25 |