반응형
람다란?
람다는 익명 메서드를 만들기 위해 사용되는 형식이다.
델리게이트로도 익명 메서드를 만들 수 있지만 람다를 사용하면 코드가 훨씬 간결해진다.
람다에는 두가지 형태가있는데 람다식과 람다문이다.
// 람다식
(파라미터) => 식;
// 람다문
(파라미터) => {
};
람다는 => 연산자로만 이루어지며 형식 유추라는 기능을 제공하기때문에 데이터 타입을 입력하지않아도되고
파라미터의 개수가 한개일 경우 괄호( ) 를 생략해도 된다.
delegate int Calc(int x, int y);
/*
실행 :
Clac Plus = (int x, int y) => x + y;
Console.WriteLine(Plus(10, 20));
Clac Minus = (x, y) =>
{
return x - y;
}
Console.WriteLine(Plus(10, 20));
결과 :
30
-10
*/
.NET 프레임워크에서는 Func 와 Action 이라는 델리게이트를 기본적으로 제공해주고 있기때문에
람다를 사용할 때마다 직접 데리게이트를 생성해줄 필요가 없다.
Func 델리게이트
Func 델리게이트의 형식파라미터중 가장 마지막 파라미터가 델리게이트의 반환타입이되며
파라미터를 0개 부터16개까지 받을 수 있게 17개의 버전이 정의되어있다.
public delegate TResult Func<out TResult>();
public delegate TResult Func<in T, out TResult>(T arg);
public delegate TResult Func<in T1, in T2, out TResult>(T arg);
...
Func 델리게이트는 아래와 같이 사용될 수 있다.
Func<int, int, int> funcPlus = (x, y) => x + y;
Func<int, int, int> funcMinus = (x, y) =>
{
return x - y;
};
/*
실행 :
Console.WriteLine(Plus(10, 20));
Console.WriteLine(Minus(10, 20));
결과 :
30
-10
*/
다른 메서드에서 파라미터에 람다를 받아오는방법
public int Count(int[] numbers, Func<int, bool> judge)
{
int count = 0;
foreach (var n in numbers)
{
if (judge(n) == true)
count++;
}
return count;
}
/*
실행 :
int[] numbers = new int[] { 1, 2, 3, 4, 5, 6, 7 };
Count(numbers, x => x % 2 == 0);
결과 :
3
*/
Action 델리게이트
Action 델리게이트는 Func 델리게이트와 거의 똑같지만 반환형식이 존재하지않는다.
Action 델리게이트는 일반 메서드의 void 반환형식일때 사용된다.
Action<string> actionPrint = message => Console.WriteLine(message);
반응형
'프로그래밍 > .NET' 카테고리의 다른 글
SHA256 단방향 암호화하기 (0) | 2021.07.18 |
---|---|
.net core 설치 in terminal (0) | 2021.02.25 |
델리게이트 (Delegate) (0) | 2020.12.11 |
메서드 (Method) (0) | 2020.12.10 |
Startup Class (0) | 2020.11.29 |