반응형
람다식은 익명함수(Anonymous functions)를 지칭하는 용어이다.
장점
- 코드의 간결함(불필요한 루프문 삭제 가능, 재활용성 ↑)
- 지연 연산을 통한 퍼포먼스 향상
단점
- 모든 원소를 전부 순회하는 경우, 효율성 ↓
- 코드의 가독성 ↓
- 디버깅시 함수 콜스택 추적이 어려움
람다식은 람다 연산자를 사용한다. =>
Func대리자를 통해 예제를 만들어보자
using System;
namespace ConsoleApp1
{
internal class Lamda1
{
static void Main(string[] args)
{
Console.WriteLine(IsAdult(25));
}
public static string IsAdult(int age)
{
if (age > 19)
{
return "성인";
}
else
{
return "미성년";
}
}
}
}
위의 코드를 람다식을 이용해 보겠다.
Func대리자와 Action대리자를 사용할 예정이니 모르는 분들은 아래 링크를 참고해주길 바란다.
https://jjomnoon-diary.tistory.com/33?category=929610
Func 대리자
using System;
namespace ConsoleApp1
{
internal class Lamda1
{
static void Main(string[] args)
{
Func<int, string> isAdult = (age) => age > 19 ? "성인" : "미성년";
Console.WriteLine(isAdult(25));
}
}
}
메서드가 사라졌으며 코드가 매우 간결해 졌다.
Action 대리자
using System;
namespace ConsoleApp1
{
internal class Lamda1
{
static void Main(string[] args)
{
Action<int> isAdult = age => age > 19 ? Console.WriteLine("성인") : Console.WriteLine("미성년");
isAdult(25);
}
}
}
위와같이 했더니 에러가 났다
오류 CS0201 대입, 호출, 증가, 감소 및 새 개체 식만 문으로 사용할 수 있습니다.
그래서 다른방법으로,,,, 람다문을 이용했다.
using System;
namespace ConsoleApp1
{
internal class Lamda1
{
static void Main(string[] args)
{
Action<int> isAdult = age =>
{
if (age > 19)
Console.WriteLine("성인");
else
Console.WriteLine("미성년");
};
isAdult(25);
}
}
}
Action은 삼항연산자를 사용을 못하나..?
아시는분들은 댓글좀,,,,, ㅠㅠㅠㅠ😭😭😭😭😭
로컬 대리자
using System;
namespace ConsoleApp1
{
internal class Lamda1
{
static void Main(string[] args)
{
int PlusFunc(int a, int b) => a + b;
Console.WriteLine(PlusFunc(5,10));
void MultiFunc(int a, int b) => Console.WriteLine(a * b);
MultiFunc(5, 10);
}
}
}
로컬대리자는 로컬에서만 사용할 수 있다.
포스팅에 오류가 있거나 오타가 있다면 댓글로 알려주시기 바랍니다.
도움이 되셨다면 공감버튼을 눌러주세요.🥰
반응형
'개발일지 > Unity 3D&C#' 카테고리의 다른 글
[C#] 반복문 - foreach / for / while (0) | 2022.06.30 |
---|---|
[C#] 델리게이트(delegate) - Func, Action, Predicate (0) | 2022.06.24 |
[C#] 델리게이트(delegate) - 델리게이트, 콜백 사용 방법 및 사용 이유 (1) | 2022.06.16 |
[UNITY] 코루틴이란? (0) | 2022.06.07 |
[디자인 패턴]Singleton 패턴 (0) | 2022.06.07 |
댓글