In my experience, there is no book to do this. Forums help with idioms and best practices, but in the end you're going to have to put in the time. Practice by solving a number of different problems in C#. Look at what was hard/awkward and try to make them less hard and less awkward next time. For me, this process took about a month before I "got it". The biggest thing to focus on is the lack of memory management. In C++ this lords over every single design decision you make, but in C# it is counter productive. In C#, you often want to *ignore* the death or other state transitions of your objects. That sort of association adds unnecessary coupling. Mostly, focus on using the new tools most effectively, not beating yourself up over an attachment to the old ones.