During my college days (well, when I was Exactly halfway through college), I looked upon myself and saw that I had hit a wall in programming, I was at that stage where you can’t consider yourself a complete newbie (i.e knew a little about OOP using Java and C++, made some really simple programs that used recursiveness, data structures and so on) , but also was at the stage where I could not consider myself above average at any specific language (with above average I mean being able to create bigger programs than BMI calculators and your typical College student projects ) so I decided to pick a framework and a language and try to go as far as I could with them, something which is usually the hardest part for someone with no real experience and has no idea what to choose.
After meticulously studying the job market (at around that time, the debate was still raging on between Mobile vs Desktop vs Web based apps, if you are reading this in the future probably mobile and web based fused together and desktop is a dying niche), my interests (it had to be something that allowed me to learn as native as I could go with being productive at the same time) and my remaining college courses (picking something that I could use along the way to flex my muscles was certainly not a bad idea), I finally decided to learn C# and .Net as my to-go language & framework of choice, so I decided to pick up a book about it and just go with the flow with wathever it throws at me.
The C# 6.0 and the .NET 4.6 Framework book by Andrew Troelsen and Phillip Japikse was the highest rated C# book on Amazon for learning the Language, and to this day I don’t regret picking it up as my main learning source for it. As you are directly touching the .Net framework, you are learning about the underlying work of windows in virtually every process it does when executing any native program written for it.
At first the book might overwhelm you. Especially when you realize it has a little over 1500 pages, but if you are like me, with deep interests in the internal work of windows you will be craving for more. The first 500 pages cover the world of C# and to some extent, the Common intermediate language, both basic and advanced topic, but the best thing is how they explain the inner behavior in memory of every single aspect C# has to offer (from the ridiculous powerful data type conversion to the syntactic sugar).
Then it follows around 500 or so more pages of pure .Net knowledge (Assemblies, Custom call libraries shared by the whole framework, Base class libraries, Type Reflection, Metadata, Processes, Multithreading, CIL, and so on) and lastly, it touched the surface of WCF, (Computing APIs of windows services), WPF (Windows presentation foundation, a MVVM oriented framework to develop Native window programs using XAML as the User interface language) to finally arrive to the big world of Asp.Net (if you are into web, sadly it goes kinda deep into web forms, now legacy tech.)
Depending of your level of knowledge of the world of windows and computing in general, this book is an eye opener(I find myself reading some parts of it again from time to time as reference), it also gives you a lot of “haha” moments when you remember those old programs that gave you 10 Error exemptions asking for Dlls (DLL hell) were just asking some library assemblies missing in the base class library that you missed in the installer, or did not copied from the CD, but nonetheless, you will know a lot more about the reasoning behind it and its behavior from the inside, gaining a little of global vision about what’s going on in your PC.
You can buy C# 6.0 and the .NET 4.6 Framework by Andrew Troelsen and Philip Japikse from amazon in here ( not affiliate link, just in case)
Edit On 02/01/2018:
After this blog post was posted in its original form, it got read by the man himself, Phillip Japikse, who notified me of a newer, updated version of this book, which was released a little after 2017 Black friday, where they removed the lagecy tech WebForms chapters, and added MVC5/WebAPI2.2 and .NET core content, You can get now the eight edition of this book: Pro C# 7 by Andrew Troelsen and Phillip Japikse. (Here’s hoping to find time to practice those new chapters.)