C# не то что бы легче, просто язык многое делает неявно за тебя, многие вещи сложны внутри, но простые для использования.
C# усваивается легче, идет сразу с библиотеками почти на все случаи жизни.
C++ вываливает всю сложность на пользователя, нужно самому разбираться.
C++ гибче как его освоишь, но пока освоишь пройдет немало времени.
Понимание C++ дает лучшее понимание как устроена та или иная фишка из C#.
Вот пример "неявности" C#:
struct StackWork {
public Int32 Value;
}
class HeapWork {
public Int32 Value;
}
// ...
StackWork sw1 = new StackWork();
StackWork sw2 = sw1;
sw2.Value = 475;
Console.WriteLine( sw1.Value.ToString() ); // 0
// ...
HeapWork hw1 = new HeapWork();
HeapWork hw2 = hw1;
hw2.Value = 475;
Console.WriteLine( hw1.Value.ToString() ); // 475
То есть, область выделяемой под обьект памяти (куча или стек) зависит от типа, причем при одинаковом синтаксисе ( "new TypeName()" ).
Конечно, это сделано для удобства, но в C# ты не можешь выбирать в какой области памяти разместить свой обьект!
А вот пример на "страшных и неинтуитивных плюсах":
struct MyWork {
int Value = 0;
}
//...
// Явно, выделяем память в стеке
MyWork sw1;
MyWork sw2 = sw1;
sw2.Value = 475;
cout << sw1.Value; // Как и ожидалось, 0
// Явно, выделяем память в куче
MyWork * h1 = new MyWork;
MyWork *h2 = h1;
hw2 -> Value = 475;
cout << hw1 -> Value; // Как и ожидалось, 475
Интересные вещи есть и там и там.
Для бизнеса конечно выгоднее C# (никаких заморочек, поддержка, библиотеки).
Но все же C++ интереснее для саморазвития.