Anonymous Methods and Lambda Expression
아래 기술된 코드는 실행 결과가 모두 같다.
익명 함수에서 람다식으로 변형되는 과정이다.
방식 1
using System;
namespace AnonymousMethodAndLambda
{
internal class Program
{
delegate void Operation(int num);
static void Main(string[] args)
{
Operation op = Double;
op(2);
Console.ReadKey();
}
static void Double(int num)
{
Console.WriteLine("{0} x 2 = {1}", num, num * 2);
}
}
}
방식 2
using System;
namespace AnonymousMethodAndLambda
{
internal class Program
{
delegate void Operation(int num);
static void Main(string[] args)
{
Operation op = delegate(int num) { Console.WriteLine("{0} x 2 = {1}", num, num * 2); };
op(2);
Console.ReadKey();
}
}
}
방식 3
using System;
namespace AnonymousMethodAndLambda
{
internal class Program
{
delegate int Operation(int num);
static void Main(string[] args)
{
Operation op = delegate(int num)
{
return num * 2;
};
int value = op(2);
Console.WriteLine(value);
Console.ReadKey();
}
}
}
방식 4 - Lambda
- Action : 반환값이 없는 경우
- Func : 반환값이 있는 경우(마지막 인자가 반환값이다.
using System;
namespace AnonymousMethodAndLambda
{
class Program
{
static void Main(string[] args)
{
Action<int> op = num => { Console.WriteLine("{0} x 2 = {1}", num, num * 2); };
op(2);
Func<int, int> Double = x => { return x * 2; };
Console.WriteLine(Double(2));
Console.ReadKey();
}
}
}
https://www.youtube.com/watch?v=qmdziLz51w4&t=7s