When I first heard this word lambda I was in my sixth or seventh standard (well in reality I don't remember when so that is approximate). It was a relative Mathematics term. Then I got older (not that much) then I began to learn programming. I was learning C# and I heard lambda again. Now how the hell is lambda relevant to programming? I decided to learn about it so here is my journey to lambda. 
Part 1: Delegates 
It all starts when Microsoft decided to put delegates in C#. Well some of you might remember function pointers in C++ classes. Microsoft decided to use the same functionality as delegates (well actually delegates do much more then that). 
- Here we create a delegate: 
- public delegate void del(string msg);  
 
 
 - We create methods with a similar signature as in the following:
- public static void fun(string message)  
 - {  
 -    Console.WriteLine(message);  
 - }  
 
 
 - And assign that delegate's handler to the function.
 - The next step is easy, we just pass the required parameters to the handler and it will execute automatically as in the following:
In the totality of the code if we create a Console Application then it will looks like this:
- public delegate void del(string msg);  
 -   
 - public static void fun(string message)  
 - {  
 -    Console.WriteLine(message);  
 - }  
 -   
 - static void Main(string[] args)  
 - {  
 -    del handler = fun;  
 -    handler("Hello World");  
 -    Console.ReadKey();  
 - }  
 
 Here is the output:
![output]()
When I first learned about this I thought what the hell is that. Why would I assign my function to a delegate's handler and then use that to execute it. I mean I can directly execute my own function, it looks like a stupid thing to me to do such kind of thing but actually I was wrong.
I can assign multiple functions to the same delegate's handler and execute them simultaneously, just like that.
 
 - So to do this let's create another function. 
- public static void fun2(string abc)  
 - {  
 -    Console.WriteLine("ABCD");  
 - } 
 
 
 - Assign this as well to the handler:
Note: be careful, to assign a second function use += instead of the = operator.
Now execute the same code.
![code]()
Some of you still might be thinking Ok we can call multiple methods with the single call, but what is the benefit? See the following code:
- public delegate void delWriter(string msg);  
 - public static void WriteToConsole(string message)  
 - {  
 -    Console.WriteLine(message);  
 - }  
 - public static void WriteToFile(string abc)  
 - {  
 -   
 -   
 -   
 -   
 - }  
 - public static void WriteToDatabase(string abc)  
 - {  
 -   
 -   
 -   
 -   
 - }  
 - static void Main(string[] args)  
 - {  
 -     del handler = WriteToConsole;  
 -     handler += WriteToFile;  
 -     handler += WriteToDatabase;  
 -     handler("Hello World");  
 -     Console.ReadKey();  
 - }  
 
  
Here the implementation says that I can write to the screen as well as on the file and the database at the same time. 
Plus I get one more benefit since all the code is in 2 functions, I can easily modify them and it will not affect the other code instead of creating a long method that can be difficult to maintain (you see I am handling a difficult database, doing file handling and console writing operations, just kidding!)
Our story will continue. Until the next part, au revoir.