Preface What this book covers What you need for this book Who this book is for Sections Getting ready How to do it… How it works… There's more… See also Conventions Reader feedback Customer support Downloading the example code Errata Piracy Questions New Features in C# 7.0 Introduction Working with Tuples - getting started Getting ready How to do it... How it works... Working with Tuples - going deeper Getting ready How to do it... How it works... Pattern matching Getting ready How to do it... How it works... Out variables Getting ready How to do it... How it works... Deconstruction Getting ready How to do it... How it works... Local functions Getting ready How to do it... How it works... Improvements to literals Getting ready How to do it... How it works... Ref returns and locals Getting ready How to do it... How it works... Generalized async return types Getting ready How to do it... How it works... Expression bodies for accessors, constructors, and finalizers Getting ready How to do it... How it works... throw expressions Getting ready How to do it... How it works... Classes and Generics Introduction Creating and implementing an abstract class Getting ready How to do it... How it works... Creating and implementing an interface Getting ready How to do it... How it works... Creating and using a generic class or method Getting ready How to do it... How it works... Creating and using a generic interface Getting ready How to do it... How it works... Object-Oriented Programming in C# Introduction Using inheritance in C# Getting ready How to do it... How it works... Using abstraction Getting ready How to do it... How it works... Leveraging encapsulation Getting ready How to do it... How it works... Implementing polymorphism Getting ready How to do it... How it works... Single responsibility principle Getting ready How to do it... How it works... Open/closed principle Getting ready How to do it... How it works... Exception handling Getting ready How to do it... How it works... Code Analyzers in Visual Studio Introduction Finding and installing analyzers Getting ready How to do it... How it works... Creating a code analyzer Getting ready How to do it... How it works... Creating a custom code analyzer Getting ready How to do it... How it works... Deploying your code analyzer within your organization only Getting ready How to do it... How it works... Regular Expressions Introduction Getting started with regex - Matching a valid date Getting ready How to do it... How it works... Sanitizing input Getting ready How to do it... How it works... Dynamic regex matching Getting ready How to do it... How it works... Working with Files, Streams, and Serialization Introduction Creating and extracting ZIP archives Getting ready How to do it... How it works... In-memory stream compression and decompression Getting ready How to do it... How it works... Async and await file processing Getting ready How to do it... How it works... How to make a custom type serializable? Getting ready How to do it... How it works... Using ISerializable for custom serialization to a FileStream Getting ready How to do it... How it works... Using XmlSerializer Getting ready How to do it... How it works... JSON serializers Getting ready How to do it... How it works... Making Apps Responsive with Asynchronous Programming Introduction Return types of asynchronous functions Getting ready How to do it... How it works... Handling tasks in asynchronous programming Getting ready How to do it... How it works... Exception handling in asynchronous programming Getting ready How to do it... How it works... High Performance Programming Using Parallel and Multithreading in C# Introduction Creating and aborting a low-priority background thread Getting ready How to do it... How it works... Increasing the maximum thread pool size Getting ready How to do it... How it works... Creating multiple threads Getting ready How to do it... How it works... Locking one thread until the contended resources are available Getting ready How to do it... How it works... Invoking parallel calls to methods using Parallel.Invoke Getting ready How to do it... How it works... Using a parallel foreach loop Getting ready How to do it... How it works... Cancelling a parallel foreach loop Getting ready How to do it... How it works... Catching errors in parallel foreach loops Getting ready How to do it... How it works... Debugging multiple threads Getting ready How to do it... How it works... Composing Event-Based Programs Using Reactive Extensions Introduction Installing Rx Getting ready How to do it... How it works... Events versus observables Getting ready How to do it... How it works... Using LINQ to perform queries Getting ready How to do it... How it works... Using schedulers in Rx Getting ready How to do it... How it works... Debugging lambda expressions Getting ready How to do it... How it works... Exploring .NET Core 1.1 Introduction Creating a simple .NET Core application and running it on a Mac Getting ready How to do it... How it works... Creating your first ASP.NET Core application Getting ready How to do it... How it works Publishing your ASP.NET Core application Getting ready How to do it... How it works... ASP.NET Core on the MVC Framework Introduction Including middleware and why it is useful Getting ready How to do it... How it works... Creating Controllers and using routing Getting ready How to do it... How it works... Rendering Views Getting ready How to do it... How it works... Choosing and Using a Source Control Strategy Introduction Setting up Visual Studio account management and determining which source control solution is best for you Getting ready How to do it... How it works... Setting up Visual Studio GitHub integration, checking in code for the first time, and checking in changes Getting ready How to do it... How it works... Working as a team using GitHub, handling and resolving conflicts in code Getting ready How to do it... How it works... Creating a Mobile Application in Visual Studio Introduction Installing Xamarin and other required components on your Windows PC and Mac Getting ready How to do it... How it works... Creating a mobile application using Apache Cordova Getting ready How to do it... How it works... Creating an iOS application using Xamarin.Forms and Visual Studio for Mac Getting ready How to do it... How it works... Writing Secure Code and Debugging in Visual Studio Introduction Encrypting and storing passwords correctly Getting ready How to do it... How it works... Using SecureString in code Getting ready How to do it... How it works... Securing sensitive parts of the App.config/web.config Getting ready How to do it... How it works... Preventing SQL injection attacks Getting ready How to do it... How it works... Using IntelliTrace, diagnostic tools, and historical debugging Getting ready How to do it... How it works... Setting conditional breakpoints Getting ready How to do it... How it works... Using PerfTips to identify bottlenecks in code Getting ready How to do it... How it works... Creating Microservices on Azure Service Fabric Introduction Downloading and installing Service Fabric Getting ready How to do it... How it works... Creating a Service Fabric application with a stateless actor service Getting ready How to do it... How it works... Using Service Fabric Explorer Getting ready How to do it... How it works... Azure and Serverless Computing Introduction Creating an Azure function Getting ready How to do it... How it works... Providing print functionality with DocRaptor Getting ready How to do it... How it works... Using AWS and S3 Getting ready How to do it... How it works... Creating C# Lambda functions with AWS Getting ready How to do it... How it works...