I understand a lambda expression is in essence an inline delegate declaration to prevent the extra step
example
delegate int Square(int x)
public class
You must understand the Func behavior, where the last parameter is always the output or result
Func<1, 2, outPut>
Func<int, int, int> Add = (x, y) => x + y;
Func<int, int, int> diff = (x, y) => x - y;
Func<int, int, int> multi = (x, y) => x * y;
Yes. When you have other-than-one (zero, or > 1) lambda arguments, use parenthesis around them.
Examples
Func<int, int, int> add = (a,b) => a + b;
int result = add(1, 3);
Func<int> constant = () => 42;
var life = constant();
delegate int Multiplication(int x, int y)
public class Program
{
static void Main(String[] args)
{
Multiplication s = (o,p)=>o*p;
int result = s(5,2);
Console.WriteLine(result); // gives 10
}
}