I recently completed a course on .NET's implementation of the C# programming language and while I feel content with the concepts I was taught it's clear that I wasn't taught everything that I could have been asked during an interview for a C# programming job.
For example, we were taught about Properties and how to use them, but we weren't taught how to automatically implement them. We also were not taught that at most one accessor of an Indexer/Property can have an access modifier, just like we were not taught that said accessor must be less accessible than the Indexer/Property.
Attributes were mentioned in passing, especially within the context of making a class serializable, but nothing else was mentioned about attributes.
Nothing was mentioned about explicitly implemented events or the purpose served by their add/remove accessors.
Constant fields might have been mentioned in passing but no proper explanation was given nor were they compared to ReadOnly fields.
Switch statements were covered to a reasonable extent, but just recently I learned that instances of floating point types cannot be "switched".
I could go on and on about "basic" C# programming concepts we were not taught and that I eventually picked up on my own either by trial and error or by reading random sources of information on the internet.
I also know that it could be argued that it is unlikely that I'll ever have to, for example, explicitly implement an event, but all those questions are fair game during interviews for C# programming jobs, even entry-level jobs.
What I want to know is if there is a book or resource out there that properly explains everything that there is to know about the C# programming language. I can't say that I overly feel unsatisfied with the amount or quality of the knowledge that I have acquired so far, but I'd like to continue acquiring knowledge in a more systematic way and frankly I don't have the time to learn through trial & error or by means of reading random articles on the internet every now and then.