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

Asynchronous programming with the async and await keywords


The async and await keywords were announced in C# 5.0 and became the latest and greatest things in C# asynchronous programming. Developed from the TAP pattern, C# integrates these two keywords into the language itself so that it makes it simple and easy to read. Using these two keywords, the Task and Task<TResult> classes still become the core building blocks of asynchronous programming. We will still build a new Task or Task<TResult> data type using the Task.Run() method, as discussed in the previous section.

Now let's take a look at the following code, which demonstrates the async and await keywords, which we can find in the AsyncAwait.csproj project:

public partial class Program 
{ 
  static bool IsFinish; 
  public static void AsyncAwaitReadFile() 
  { 
    IsFinish = false; 
    ReadFileAsync(); 
    //do other work while file is read 
    int i = 0; 
    do 
    {...