Most of the little annoyances that C++ has (headers, memory management) are gone (or significantly easier to deal with) in C#, but there are still some weird things that won't work as you'd expect until you learn how the nuances work.
Make sure to focus some attention on learning how C#'s reference and value type differences work, since it's significantly different from C++. In C#, the reference-ness or value-ness of something comes from whether its type uses a class or struct keyword, instead of C++'s & or * on each variable (or lack thereof). C# classes are always allocated on the heap. C# structs are allocated based on where the variable is defined (and can be allocated on the stack even with the 'new' keyword).
At work I use the Unity game engine with C#, and it works pretty well. Unity has a handful of minor annoyances, but those are insignificant compared to what we used to face when using C++ with various middleware.
There are also some things which are better in C++. RAII is simpler to use than C#'s 'using' statement (until C# 8 comes out, anyway). C++ templates are MUCH more capable than C#'s generics (although it's extremely rare when I find myself wanting C++'s template capabilities). For example, C# has no way to make a generic function with variadic arguments like C++ has, such as if you wanted to make a generic function that can call different classes' constructors. The closest you can get is the 'params' argument qualifier, but that is much more restrictive than C++ variadics.