코드로서의 람다식
class Program
{
delegate int? MyDivide(int a, int b);
static void Main(string[] args)
{
MyDivide myFunc = (a, b) =>
{
if (b == 0)
{
return null;
}
return a / b;
};
Console.WriteLine("10 / 0 = " + myFunc(10, 0));
}
}
Func, Action 델리게이트를 이용한 Lambda expression
// public delegate void Action(T obj);
// 반환값이 없는 델리게이트로서 T 형식 매개변수는 입력될 인자 1개의 타입을 지정
// public delegate TResult Func();
// 반환값이 있는 델리게이트로서 TResult 형식 매개변수는 반환될 타입을 지정
class Program
{
static void Main()
{
Action log = (text) =>
{
Console.WriteLine(text);
};
log("Hello world!");
Func age = (a, b) => a + b;
Console.WriteLine(age(14, 14));
}
}
/*
public delegate void Action(T arg);
public delegate void Action(T1 arg1, T2 arg2);
...
T1~T16까지 Action delegate 정의
public delegate TResult Func();
public delegate TResult Func(T arg);
public delegate TResult Func(T1 arg1, T2 arg2);
...
T1 ~ T16까지 Func delegate 정의
*/
Collection & Lambda expression [ForEach]
// List에 정의된 ForEach
// public void ForEach(Action action);
// Array에 정의된 ForEach
// public static void ForEach(T [] array, Action action);
class Program
{
static void Main()
{
List list = new List { 1, 2, 3, 10, 100 };
// 일반형식
foreach(var item in list)
{
Console.WriteLine(item + " * 2 == " + (item * 2));
}
// 람다식
list.ForEach((elem) => { Console.WriteLine(elem + " * 2 == " + (elem * 2)); });
// 또는
Array.ForEach(list.ToArray(), (elem) => { Console.WriteLine(elem + " * 2 == " + (elem * 2)); });
}
}
Collection & Lambda expression [FindAll, Where, Count, Select]
class Program
{
static void Main()
{
List list = new List { 1, 2, 3, 10, 100, 501 };
// 짝수로 구성된 리스트 반환
List result = new List();
// 일반형식
foreach (var item in list)
{
if (item % 2 == 0)
{
result.Add(item);
}
}
// FindAll
result = list.FindAll((elem) => elem % 2 == 0);
// Where
IEnumerable enumList = list.Where((elem) => elem % 2 == 0);
// Count
int count = list.Count((elem) => elem > 3);
// Select
IEnumerable doubleList = list.Select((elem) => (double)elem);
IEnumerable personList = list.Select((elem) => new Person {Age = elem, Name = Guid.NewGuid().ToString()});
var itemList = list.Select((elem) => new {TypeNo = elem, CreateDate = DateTime.Now});
}
}
class Person
{
public int Age {get; set;}
public string Name {get; set;}
}