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

The asynchronous programming model pattern


The asynchronous programming model (APM) is an asynchronous operation that uses the IAsyncResult interface as its design pattern. It's also called the IAsyncResult pattern. For this purpose, the framework has provided the method named BeginXx and EndXx, in which Xx is the operation name, for instance, BeginRead and EndRead provided by the FileStream class to read bytes from a file asynchronously.

The difference in the synchronous Read() method with BeginRead() and EndRead() can be recognized from the method's declaration, as follows:

public int Read( 
  byte[] array, 
  int offset, 
  int count 
) 
public IAsyncResult BeginRead( 
  byte[] array, 
  int offset, 
  int numBytes, 
  AsyncCallback userCallback, 
  object stateObject 
) 
public int EndRead( 
  IAsyncResult asyncResult 
) 

As we can see, in the synchronous Read() method, we need three parameters; they are array,...