프로그래밍/C#
[C#] 람다 표현식 (Lambda Expression)
갓똥
2020. 4. 16. 17:36
728x90
반응형
1. 핵심 정리
using System;
class Program {
public static void foo(Func<int, int, int> f) {
int s = f(1, 2);
Console.WriteLine(s);
}
static void Main(string[] args) {
foo( ? );
}
}
Main에서 foo함수의 인자로 메소드를 받는데 메소드의 이름이 아닌 구현부를 넣을 수 있다.
이름을 제외한 인자~구현부까지 넣으면 되는데 형태는 아래와 같다.
using System;
class Program {
public static void foo(Func<int, int, int> f) {
int s = f(1, 2);
Console.WriteLine(s);
}
static void Main(string[] args) {
foo(Add); // 일반식
foo((int a, int b) => { return a + b; }); // 람다표현식
}
public static int Add(int a, int b) { return a + b; }
}
① 람다 표현식(Lambda Expression) 이란?
=> 익명의 메소드를 만드는 문법
=> 메소드 이름이 필요한 곳에 람다 표현식을 사용할 수 있다.
2. 추가 정보
using System;
class Program {
public static int Add(int a, int b) { return a + b; }
static void Main() {
Func<int, int, int> f1 = Add;
Func<int, int, int> f2 = (int a, int b) => { return a + b; };
Func<int, int, int> f3 = (a, b) => { return a + b; };
Func<int, int, int> f4 = (a, b) => a + b;
Func<int, int> f5 = (a) => a + a;
Func<int, int> f6 = a => a + a;
}
}
9 ~ 17번 라인은 람다 표현식을 사용한 코드이다.
차례 차례 살펴보면
9 : 기본적인 람다 표현식
11 : 앞의 Func에 인자 타입이 있으므로 인자 타입을 생략할 수 있다.
13 : 구현부가 간단하다면 return과 { } 를 생략할 수 있다.
15, 17 : 인자쪽의 가로는 생략할 수 없지만 인자가 1개라면 생략 가능하다.
특히 17번 라인은 추후 다룰 Linq에서 자주 보이는 문법이다.
728x90
반응형