[C#] 17일차 - 117. 람다식의 사용C#/C#200제2021. 2. 15. 18:42
Table of Contents
람다식은 익명메소드를 간단하게 표현할 수 있는 방법.
1. 식 람다
연산자의 오른쪽에 식이 있는것을 식 람다라고함.
식 람다는 식의 결과를 반환하며 기본 형식은 아래와 같음
(input-parameters) => expression
2. 문 람다
문 람다는 다음과 같이 중괄호 안에 문장을 지정한다는 점을 제외하면 식 람다와 비슷하다.
(input-parameters) => { statement; }
간단한 예제 : 리턴값이 없고 매개변수가 하나인 메소드를 문 람다로 작성.
greet("World"); 라고 호출하면 "Hello World!" 라고 출력됨
Action<string> greet = name =>
{
string greeting = $"Hello {name}!";
Console.WriteLine(greeting);
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace A117_LambdaExamples
{
class Program
{
delegate double CalcMethod(double a, double b);
delegate bool IsTeenAger(Student student);
delegate bool IsAdult(Student student);
static void Main(string[] args)
{
// square는 하나의 정수를 매개변수로하고 return값이 정수인 Func 델리게이트
Func<int, int> square = x => x * x;
Console.WriteLine(square(5));
// 정수배열의 각 요소를 제곱해 할당한 후 합쳐서 출력
int[] numbers = { 2, 3, 4, 5 };
var squaredNumbers = numbers.Select(x => x * x);
Console.WriteLine(string.Join(" ", squaredNumbers));
// Action 델리게이트로 line() = Console.WriteLine()은 같다.
Action line = () => Console.WriteLine();
line();
CalcMethod add = (a, b) => a + b;
CalcMethod subtract = (a, b) => a - b;
Console.WriteLine(add(10, 20));
Console.WriteLine(subtract(10.5, 20));
IsTeenAger isTeen = delegate (Student s) { return s.Age > 12 && s.Age < 20; };
Student s1 = new Student() { Name = " John", Age = 18 };
Console.WriteLine("{0}은 {1}.", s1.Name, isTeen(s1) ? "청소년입니다" : "청소년이 아닙니다.");
IsAdult isAdult = (s) =>
{
int adultAge = 18;
return s.Age >= adultAge;
};
Student s2 = new Student() { Name = "Robin", Age = 20 };
Console.WriteLine("{0}은 {1}.", s2.Name, isAdult(s2) ? "성인입니다" : "성인이 아닙니다.");
}
}
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
}
반응형
'C# > C#200제' 카테고리의 다른 글
[C#] 17일차 - 119. List<T>에서 Predicate<T>델리게이트 사용 (0) | 2021.02.15 |
---|---|
[C#] 17일차 - 118. Predicate<T> 델리게이트 (0) | 2021.02.15 |
[C#] 16일차 - 115. Func와 Action으로 델리게이트를 더 간단히 만들기 (0) | 2021.02.14 |
[C#] 16일차 - 114. 이름 없는 델리게이트 (0) | 2021.02.14 |
[C#] 16일차 - 113. Delegate의 기본, 배열에서 홀수와 짝수 찾기 (0) | 2021.02.14 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!