C# 공부

lambda

Dev_Cat 2021. 8. 26. 19:28
728x90
반응형

Study about lambda

람다식 사용 예제

delegate int Calculate(int a, int b);
static void Main(string[] args)
{
    Calculate calc = (int a, int b) => a + b;
    Console.WirteLit($"{3} + {4} : {calc(3,4)}");
}
  • anonymous function 만들기 위해 사용
  • 무명함수는 람다식으로 만든 익명 메소드
  • 매개_변수_목록 => 식
  • => : 입력 연산자

식형식 문형식 람다식

delegate void DoSomething();
static void Main()
{
    DoSomething DoIt = () =>
    {
        Console.WriteLine("what");
        Console.WriteLine("print");
    };

    DoIt();
}
  • 식 형식 : a+b or a==b
  • 문 형식 : if(a==b) return 0;

Func와 Action으로 무명 함수 만들기

static void Main(string[] args)
{
    // func delegate
    // 입력 매개변수 없고, 무조건 10 반환
    Func<int> func1 = () => 10;
    Console.WriteLine(func1());
    // 입력 매개변수는 int 형식 하나, 반환 형식도 int
    Func<int, int>  func2 = (x) => x*2;
    Console.WirteLine(func2(3));
    // action delegate
    Action act1 = () => Console.WriteLine("Action()");
    act1();
    // 람다식 밖에 선언한 result에 x*x 값 저장
    int result = 0;
    Action<int> act2 = (x) => result = x*x;
    act2(3);
    Console.WriteLine("result: {0}", result);
    Action<double, double> act3 = (x,y) =>
    {
        double pi = x/y;
        Console.WriteLine("Action<T1,T2>({0},{1}) : {2}", x, y, pi);
    };
    act3(22.0, 7.0);

}
  • 익명 메소드나 무명 함수를 만들기 위해 매번 delegate를 선언해야하는 걸 해결
  • Func 대리자는 결과를 반환하는 메소드 참조
  • Action 대리자는 결과를 반환하지 않는 메소드 참조
728x90
반응형