Introduction
Lambda expressions provide a more concise, functional syntax for writing anonymous methods.
Why Lambda expressions?
For better understanding about Lambda expression let's look at anonymous methods which are not new to C# 3 but is available from the C# 2 itself. Anonymous methods means code blocks can be written in-line where expects delegate values. Somehow this anonymous method syntax is little bit difficult on functional programming and this is the point where lambda expressions are coming into action on C# 3.
Lambda expression syntax
A lambda expression is written as a parameter list, followed by the => token, followed by an expression or a statement block.
( parameters ) => expr
Ex: -
i => i + 1;
i => { return i + 1; }
We can read this lambda expression as "goes to" so the above example can be read as "x goes to x+1"
Note that we hear does not providing parameter types. If you need you can define types also but nothing else than adds more readability to your coding with little more typing.
We can use multiple parameters also
(i,j) => i + j;
Or even no parameters at all, like this
() => Console.Write("Hi Lambda");
Example:
So now you have basic idea about Lambda expressions, now it's better to moving on to little more examples
Func<int, int> f1 = x => { return x + 2; };
Console.WriteLine(f1(1));
Produces the output: - 3
As I told first this is actually nothing more than anonymous method, so this can be written in as
Func<int, int> f1 = delegate(int x) { return x + 2; };
Console.WriteLine(f1(1));
Produces the output: - 3
Example:
We can even write methods of several lines, although it is not what we expecting by using Lambda expression it is possible to write and perfectly correct.
Func<int, double, string, int> f4 = (x, y, z) =>
{
int i_1 = x;
int i_2 = Convert.ToInt32(y);
int i_3;
if (!int.TryParse(z, out i_3))
return -1;
return i_1 + i_2 + i_3;
};
Console.WriteLine(f4(1, 2.0, "3"));
Example:
Another useful example
button1.Click += (s, ea) => MessageBox.Show("Hi");
Conclusion
Here I have given you introduction and some examples where Lambda expression becomes helpful for us and C# 3 had made developers life easier.