c# lambda expression
//Lambdas are just short handed anonymous method or functions usally
//for use in passing to other methods or functions to call such as a sort.
//Example:
//The Lambda used here after the =s
Action ExampleContainerForDelagate = ()=>
{/*Do something such as this example*/
Console.WriteLine("Hello world");
};
//has been shorted from this anonymous delegate or method.
Action ExampleContainerForDelagate = delegate () { Console.WriteLine("Hello world"); };
//And this full (named) method signature method passing
Action ExampleContainerForDelagate = ExampleMethod;
void ExampleMethod()
{ Console.WriteLine("Hello world"); }
//usage example
List<int> ExampleList = new List(){1,3,0};
ExampleList.Sort((x,y)=>{return x - y; });
//The Sort will sort based on the return values from the Lambda passed.
//a negative will be seen as a smaller than the next number
//a 0 will be seen as equal
//and a positive will be seen as bigger than the next number
//by switching x and y postion in the 'return x - y;' you will effectively
//change the sort to descending order. This is there for useful for sorting
//based on needs or where it is not obvious how to sort.
int[] numbers = {1, 3, 5, 6, 7, 8};
//----------------------------------------------------------//
//Original expression
public static bool IsEven(int num)
{
return num % 2 == 0;
}
bool hasEvenNumber = Array.Exists(numbers,
IsEven);
//----------------------------------------------------------//
//Lambda expression
bool hasEvenNumber = Array.Exists(numbers,
(int num) => num % 2 == 0 );
//Some code can be removed:
// - The modulo operator (%) is only used with numbers*/
bool hasEvenNumber = Array.Exists(numbers,
(num) => num % 2 == 0 );
// - just one parameter, we don’t need the parentheses
bool hasEvenNumbers = Array.Exists(numbers,
num => num % 2 == 0 );
//----------------------------------------------------------//