웹 개발 메모장

[C#] Func 와 Action 대리자(delegate) 란? 본문

옛날../C#

[C#] Func 와 Action 대리자(delegate) 란?

도로롱주 2017. 10. 13. 16:03



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<intintint> 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