Words like “advanced” and “expert” are vague enough to be almost meaningless. It is not unreasonable to expect, however, that a book with the word “advanced” in the title will deliver more than a general-purpose overview of its subject. The author introduces this book with a note that it is intended for “C# developers with some prior knowledge of writing applications in C# with Visual Studio.” There are a few interesting notes about C# 7 and 8 language features, but no material that would not be familiar to a developer with an intermediate grasp of the language. Given the recent releases of .NET 5 and C# 9, this book will have limited value.
The first chapter, “C# 7 in Focus,” contains an overview of highlights of the C# 7 language specification. Of note in this chapter are the discussions of the Tuple and ValueTask types, which are useful in a variety of situations. ValueTask in particular can help to resolve performance issues introduced in certain cases by use of the async/await pattern in C# code.
The second chapter, “Exploring C#,” gives an overview of modern asynchronous object-oriented programming in C#. This covers abstract classes and interfaces and when to use them, the async/await pattern, extension methods, generics, and nullable types. There is little here that shouldn’t be familiar to someone who has a basic grasp of C# and object-oriented programming.
In the third chapter, “The New Features of C# 8.0,” the author continues to focus on newer features of C# by looking at the constructs introduced in version 8 of the language. Some of these, like the new range class and array indexing notation, will be familiar to those conversant in other languages and prove useful in everyday coding. Other elements introduced in this chapter, like switch expressions and using declarations, are syntactic sugar that will reduce nesting and indentation. Along with the first chapter, this chapter contains the most advanced material in the book.
The fourth chapter, “Responsive Web Applications Using ASP.NET MVC,” provides an overview of responsive web development in C#. This chapter covers basic ASP.NET MVC development using jQuery, Bootstrap, SCSS, and Razor view syntax, along with basic testing and debugging in the web browser. There is nothing advanced in this chapter, and developers who are interested in web development in the Microsoft/C# technology stack are advised to seek a book that focuses on that subject.
The fifth chapter, “Getting Started with .NET Core 3.0,” introduces .NET Core 3 development, but fails to mention some key elements of .NET Core. For example, .NET Core (and now .NET 5) is the way forward for C# developers, as the .NET Framework, while supported by Microsoft, is no longer in active development. Microsoft recommends using .NET 5 or later for all new development. The discussion of .NET Core in the book, along with the C# 8 discussion, while somewhat dated, fail to address the issues with attempting to use C# 8 in the .NET Framework. Further, .NET Core, and now .NET 5, have been the path forward for Microsoft development since the publication of this book. In addition to this failure to parse out the pitfalls of .NET Core, .NET Framework, and the various C# language version implementations, the chapter fails to introduce anything that could be called advanced. Developers who are interested in .NET Core and .NET 5 development should find a resource that focuses on those.
The final chapter of the book, “Being More Productive in Visual Studio,” reads more like a collection of “tips and tricks” for the Visual Studio 2019 and VS Code development environments. This last chapter covers, among other things, Visual Studio Live Share, a new feature for collaboration within Visual Studio, and some of the refactoring tools now included natively. Some of the information here could be useful, but as with other parts of the book, developers interested in maximizing their productivity in Visual Studio are better served by a resource focused on the integrated development environment (IDE).
Exploring advanced features in C# might be better named Exploring C#. It is not an advanced book, but a general overview of C# that includes a focus on C# 7, an introduction to C# 8 language features, and assorted information about tools available to C# developers. This book would be useful for an advanced learner, or as a refresher for professional developers, but it contains little that will surprise someone with a modicum of experience in the language.
More reviews about this item: Amazon