람다식은 무명 메소드이다. IEnumerable, Action, Function 등등에 유용하게 쓰일 수가 있다.
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Linq;
namespace ConsoleApplication1
{
public delegate int TwoParamIntDele(int LVal, int RVal);
public class A
{
public int Val = 0;
public A()
{
}
public A(int AnotherVal)
{
Val = AnotherVal;
}
}
public class Test
{
public TwoParamIntDele DeleFn = null;
public static Action<int> IntAction = null;
public Test()
{
}
void Fn(Action action)
{
action.Invoke();
}
void Fn2(int LVal, int RVal)
{
DeleFn = (x, y) => { return x + y; };
Console.WriteLine($"결과는 {DeleFn.Invoke(LVal, RVal)} 이다. \n");
}
void Fn3(IEnumerable<A> numerable)
{
numerable = numerable.OrderBy(x => x.Val);
foreach (var num in numerable)
Console.WriteLine($"값은 : {num.Val}");
}
static void Main()
{
// delegate 변수를 이용한 람다식
Test test = new Test();
test.Fn(() => Console.WriteLine("이것은 Fn 함수 \n"));
// 파라미터 2개 변수와 delegate를 이용한 람다식
test.Fn2(3, 6);
// Action 변수를 이용한 람다식
Test.IntAction += (x) => { Console.WriteLine($"Int Action 값은 : {x} \n"); };
Test.IntAction.Invoke(6);
// IEnumerable을 사용한 람다식 (Linq)
test.Fn3(new A[] { new A(3), new A(7), new A(2), new A(1) });
}
}
}
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# 가비지 컬렉터 (Garbage Collector / GC) (0) | 2022.08.10 |
---|---|
C# ILookup과 Lookup<TKey, TElement>와 Dictionary<TKey, TValue>간 차이 (0) | 2022.08.07 |
C# 가변 길이 배열 (Variable Length Array) (0) | 2022.08.02 |
C# 부모 클래스 함수 호출과 오버라이딩 (base / override) (0) | 2022.07.28 |
C# 자기 자신 참조 (this) / 위임 생성자 (delegating constructor) (0) | 2022.07.28 |