I learned C# from internet tutorials, they're just as good if you ask me. If you already know C++ it's pretty easy to pick up on the syntax.
http://csharp.net-tutorials.com/
Perhaps the biggest difference I can think of is that you don't need to worry about pointers or addresses; objects are always passed by a copy of their address (though you can ref to get the original address var), and structs are always passed by a copy of their value. So you won't have a bunch of * everywhere, which is nice. You also don't have to worry about freeing memory, GC will take care of it, which is nice. Class definition and implemention are in the same file instead of two, which is nice (but you have to assign access modifiers per member and per method, which is not nice.) Instead of include, you using, which you gotta do with System.Collections.Generic to get access to the best data type, List<T>, which is similar to C++'s vector.