Book Image

Functional C#

Book Image

Functional C#

Overview of this book

Functional programming makes your application faster, improves performance, and increases your productivity. C# code is written at a higher level of abstraction, so that code will be closer to business requirements, abstracting away many low-level implementation details. This book bridges the language gap for C# developers by showing you how to create and consume functional constructs in C#. We also bridge the domain gap by showing how functional constructs can be applied in business scenarios. We’ll take you through lambda expressions and extension methods, and help you develop a deep understanding of the concepts and practices of LINQ and recursion in C#. By the end of the book, you will be able to write code using the best approach and will be able to perform unit testing in functional programming, changing how you write your applications and revolutionizing your projects.
Table of Contents (19 chapters)
Functional C#
Credits
About the Author
Acknowledgments
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface

Getting to know anonymous methods


In the previous chapter, we already discussed how to declare a delegate using named methods. When using named methods, we've have to create a method first, give it a name, and then associate it with the delegate. To refresh our memory, a simple delegate declaration associated with a named method is provided as follows:

delegate void DelDelegate(int x); 
void DoSomething(int i) { /* Implementation */ } 
DelDelegate d = DoSomething; 

From the preceding code, we simply create a delegate data type named DelDelegate, and we also create a method named DoSomething. After we have a named method, we can associate the delegate with the method. Fortunately, anonymous methods were announced in C# 2.0 to ease the use of delegates. They provide us with a shortcut to create a simple and short method that will be used once. The syntax to declare an anonymous method is as follows:

delegate([parameters]) { implementation } 

The explanation for each element...