◆ 람다
1. 람다식
람다식 익명 메소드를 만들기 위해 사용합니다.
람다식으로 만드는 익명 메소드는 무명 함수라는 이름으로 부릅니다.
람다식을 선언하는 형식은 다음과 같습니다.
-------------------------
매개 변수 목록 => 식
-------------------------
람다식에서는 =>를 중심으로 왼편에는 매개변수, 오른편에는 식이 옵니다.
람다식 코드 예)
---------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace study
{
class Program
{
delegate int Calculate(int a, int b);
static void Main(string[] args)
{
Calculate cac = (a, b) => a + b;
Console.WriteLine("{0} + {1} : {2}", 3, 4, cac(3, 4));
}
}
}---------------------------------------------------------------------------
2.문 형식의 람다식
=> 연산자의 오른편에 식 대신 중괄호 { } 로 둘러싸인 코드 블록이 위치합니다. 형식은 아래와 같습니다.
매개 변수 목록 => {
문장1;
문장2;
문장3;
};
문형식의 람다식 예 )
---------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace study
{
class Program
{
delegate void DoPrint();
static void Main(string[] args)
{
DoPrint doprint = () =>
{
Console.WriteLine("문형식의 람다식");
Console.WriteLine("새 컴퓨터 좋다");
};
doprint();
}
}
}
---------------------------------------------------------------------------
- 익명 메소드나 무명 함수를 만들기 위해 매번 별개의 델리게이트를 선언하는건 번거로울 수도 있다.
- Func 와 Action이있는데 Func는 결과를 반환하고, Action은 반환하지 않는다.
Func예
---------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace study
{
class Program
{
delegate void DoPrint();
static void Main(string[] args)
{
Func<int> func1 = () => 10;
Console.WriteLine("Func1() : {0}", func1());
Func<int,int> func2 = (x) => x*2;
Console.WriteLine("Func2(4) : {0}", func2(4));
Func<double, double, double> func3 = (x, y) => x / y;
Console.WriteLine("Func3(22/7) : {0}", func3(22,7));
}
}
}
Action 예
---------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace study
{
class Program
{
delegate void DoPrint();
static void Main(string[] args)
{
Action act1 = () => Console.WriteLine("Action()");
act1();
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);
}
}
}
'프로그래밍 > Unity' 카테고리의 다른 글
var 암시적 형식 (0) | 2017.01.05 |
---|---|
델리게이트 (0) | 2017.01.05 |
[c#] is/as 연산자 (0) | 2016.12.26 |
[c#] class 객체 (1) | 2016.12.26 |
[C#] 메소드 관련 (0) | 2016.12.21 |
댓글