람다란? 함수를 짧게, 간단하게 적는 문법.
Action<string> action;
action = str => Console.WriteLine(str);
public static void Print(string str)
{
Console.WriteLine(str);
}
이 함수는 위에 쓴 람다와 같은 의미이다.
길게 쓸 필요없이 위처럼 람다를 쓰면 짧게 쓸 수 있다.
action = Print;
action -= Print;
함수는 이렇게 action에 넣었다가 뺄 수 있지만
람다는 넣게 되면 초기화를 해주어야한다.
(double, int) x = (1.5, 2);
위처럼 두 개 이상의 자료형을 묶어서 사용할 때 쓸 수 있는 것이 튜플이다.
Console.WriteLine(x.Item1);
Console.WriteLine(x.Item2);
출력을 하고싶다면 위와 같은 방법으로 하면된다.
람다와 튜플을 같이 사용할 수도 있다.
Func<int, int, int> func2;
func2 = (a, b) => a + b;
a+b의 함수를 짧게 만들어서 func2에 넣어줄 수 있다.
Language Integrated Qurey
C#에서 컬렉션 데이터를 더 직관적으로 조회하고 가공할 수 있는 기능이다.
가독성이 올라가고, 코드량이 감소하지만, 연산량이 많아서 사용에 주의해야한다.
조건으로 값을 찾을 수 있다.
players.Where(p => p.hp > 0)
요소를 변환한다.
ex)p 에 p.name을 담는다.
players.Select(p => p.name)
요소들을 정렬해준다.
players.OrderBy(p => p.score)
첫번째 요소를 반환해준다.
players.FirstOrDefault(p => p.hp >= 0)
First를 써도 좋지만 FirstOrDefault를 쓰게 되면 첫번째 값이 없다면 null을 반환해주기때문에 이것을 쓰는것이 좋다.
Ani는 하나라도 만족하면 true.
All은 하나라도 조건을 만족하지 않는다면 false.
players.Any(p => p.level > 10)
bool값을 반환한다.
players.Sum(p => p.score)
sum은 합 / average는 평균 / count 갯수
중복제거를 위해 쓴다.
items.Distinct()
var grouped = inven.GroupBy(i => i.rarity);
foreach (var group in grouped)
{
Console.WriteLine($"희귀도: {group.Key},
개수: {group.Count()}");
foreach (var item in group)
Console.WriteLine($" - {item.itemName}");
}
같은 것끼리 그룹화 해준다.
inven.ToList()
리스트로 만들어 준다.