웹 개발 메모장
[C#] Func 와 Action 대리자(delegate) 란? 본문
Func 와 Action
delegate 를 사용하려면 매번 delegate의 이름을 지어주어야 하고, 사용하기 전에 선언을 해줘야 함으로 코드가 복잡해지게 되는데 .NET Framework에서는 좀 더 간단하게 delegate를 정의할 수 있도록 Func delegate와 Action delegate를 미리 정의해 놓았습니다.
Func
return 값이 void 가 아닌 경우
Func<매개변수1 자료형, 매개변수2 자료형, ..., 반환값 자료형>
Action
return 값이 void 인 경우Action<매개변수1 자료형, 매개변수2 자료형, ...>
예제 1. 아래의 두 코드는 같은 동작을 합니다.
delegate를 사용한 코드입니다.
1 2 3 4 5 6 | delegate int Calc(int x, int y); int myCalc(int x, int y, Calc calc) { return calc(x, y); } | cs |
Func를 사용한 코드입니다.
1 2 3 4 | int myCalc(int x, int y, Func<int, int, int> calc) { return calc(x, y); } | cs |
예제 2. 아래의 두 코드는 같은 동작을 합니다.
delegate를 사용한 코드입니다.
1 2 3 4 5 6 | delegate void WLog(string msg); void writeLog(string msg, WLog wlog) { wlog(msg); } | cs |
Action을 사용한 코드입니다.
1 2 3 4 | void writeLog(string msg, Action<string> act) { act(msg); } | cs |
'옛날.. > C#' 카테고리의 다른 글
[C#] C# 코드에서 @ 골뱅이 란? (0) | 2017.10.20 |
---|---|
[C#] 예외처리 란? (0) | 2017.10.20 |
[C#] 이니셜라이저 란? (0) | 2017.10.13 |
[C#] 람다 식 이란? (0) | 2017.10.13 |
[C#] delegate 대리자 란? (0) | 2017.10.12 |
Comments