You've probably heard about the benefits that functional programming can bring to your applications, but did you know you can apply many of the same techniques in C#? Did you know that you're probably already using some of them? In this course, you'll learn how to use C# as a functional language by taking advantage of immutability, delegation, generics, and extension methods. You'll even see how these techniques can enhance the usefulness of several of the features introduced in C# 6. Through careful application of these techniques you'll be writing more concise, predictable code with fewer defects in no time.