웹 개발 메모장
[C#] delegate 대리자 란? 본문
delegate (권한・업무 등을) 위임하다
1 | int num; | cs |
num에는 int형 정수를 저장할 수 있습니다.
2 | string str; | cs |
str에는 문자열을 저장할 수 있습니다.
3 | DateTime dt; | cs |
dt에는 DateTime 객체를 저장할 수 있습니다.
4 | delegate int Calc(int x, int y); | cs |
Calc 에는 int 2개를 인자로 받고 int를 반환하는 메서드를 저장할 수 있습니다.
(정확한 표현은 아니고 와닿기 쉽게 쓴 것 입니다.)
delegate를 간단한 예제입니다.
다음과 같은 메소드 2개가 있습니다.
1 2 3 4 5 6 7 8 9 | int plus(int x, int y) { return x + y; } int minus(int x, int y) { return x - y; } | cs |
Step 1-1. 선언하기
1 | delegate int Calc(int x, int y); | cs |
Step 1-2. 생성하기
1 | Calc calc = new Calc(plus); | cs |
또는
1 | Calc calc = new Calc(minus); | cs |
Step 1-3. 호출하기
1 | int result = calc(2, 1) | cs |
Step 1 이 기초 사용법이고 Step 2 는 메소드에 delegate를 인자로 넘기는 예제입니다.
Step 2-1. delegate를 매개변수로 활용하는 메소드 myCalc 정의
1 2 3 4 | int myCalc(int x, int y, Calc calc) { return calc(x,y); } | cs |
Step 2-2. myCalc 호출
1 | int result = myCalc(2,1,plus); | cs |
또는
1 | int result = myCalc(2,1,minus); | cs |
Step 1과 2 모두 result에 3 또는 1이 저장됩니다.
'옛날.. > C#' 카테고리의 다른 글
[C#] C# 코드에서 @ 골뱅이 란? (0) | 2017.10.20 |
---|---|
[C#] 예외처리 란? (0) | 2017.10.20 |
[C#] 이니셜라이저 란? (0) | 2017.10.13 |
[C#] Func 와 Action 대리자(delegate) 란? (0) | 2017.10.13 |
[C#] 람다 식 이란? (0) | 2017.10.13 |
Comments