How to use anonymous and Lambda expression in .net
In this post I will discuss how to use anonymous and lambda
expression in .net.
Imagine we have a simple example in c# that simply add two
numbers.
using System; using System.Collections.Generic; using System.Linq; using System.Text; class Program { public delegate int Fn(int a, int b); static void Main(string[] args) { Fn add = new Fn(Add); Console.WriteLine(add(1, 2)); } public static int Add(int a, int b) { return (a + b); } }
Let’s refactor
the delegate instance version of the code to use an anonymous method.
What is anonymous method?
Anonymous methods are a
new language feature in C# 2.0. Anonymous methods allow us to define a code
block where a delegate object is acceptable.
Let’s convert the above code using anonymous code.
Remove the following method from the delegate instance
version
public static int Add(int a, int b) { return (a + b); }
And replace following code with
Fn add = new Fn(Add); With this one.
Fn add = delegate(int a,int b) { return (a+b); };
Now we can write code as shown below to use the above
defined class using anonymous method as follows:
using System; using System.Collections.Generic; using System.Linq; using System.Text; class Program { public delegate int Fn(int a, int b); static void Main(string[] args) { 1. Fn add = delegate(int a, int b) 2. { 3. return (a + b); 4. }; Console.WriteLine(add(1, 2)); } }
Let’s go further and refactor our code using Lambda
Expression.
What is lambda
expression?
Lambda expression is
inline methods that are part of the Linq technology and converted to delegates
or an expression tree at compile time. Its
use => operator to separate method.
Meaning of => operator is goes to
i.e. if you have a c# statement x=>x+y then you read this statement as x goes to x+y.
Go to the line 1 and remove the delegate keyword.
Fn add = (int a, int b) { return (a + b); }; And place lambda sign => after method signature.
Fn add = (int a, int b)=> { return (a + b); };
So this final lambda expression version code looks something
like this.
using System; using System.Collections.Generic; using System.Linq; using System.Text; class Program { public delegate int Fn(int a, int b); static void Main(string[] args) { Fn add = (int a, int b) => { return (a + b); }; Console.WriteLine(add(1, 2)); } }
I have summarized the above discussion into following image.
No comments :
Post a Comment