"How long does it take to learn X?" is a meaningless question, since it's largely dependent on the person that's trying to learn.
C# is Microsoft's answer to Java, and has had a far more active development cycle (Oracle hasn't done shit with Java in years). If you're familiar with C++, C# will feel very similar. The biggest difference is how it handles memory access. Pointers aren't generally used, and when they are, it's in a slightly different way.
And, yeah, the barrier to entry with doing something useful with C++ is much higher than with other languages. Since you're into gaming, that's why you see all of those middleware frameworks listed in the opening credits. Unity, Unreal, Havok, Criware, etc... modern gaming all but requires these frameworks because rolling your own is hard and incredibly time consuming.
We even see it with the web now. There's a reason why websites are built with one or more frameworks. Writing your own router, your own database access layer, a flexible template system, etc. is possible, but takes away from actually solving the problem at hand - building the website you/your client wants.
So, we rely on frameworks which are built by people who do nothing more than work on them to handle the low level boilerplate work, while we work on the main problem. It's that way across the industry.
That said, I believe it's imperative to know, at least conceptually, what's going on under the hood. So, yeah, it's important to know the difference between heap memory and stack memory, what pointers and memory addresses are, the difference between pass-by-value and pass-by-reference, etc. And it's also important to understand concepts like polymorphism, and when/why to use inheritance vs. composition, and basic design patterns and algorithms. Because - and this is especially prevalent on the web - there are far too many people who are cargo cult coders. People who learned through tutorials and only do things that way because they don't really know what's going on, but it generated the proper result for them so that's what they do.
So, no, your time wasn't wasted with C++, provided you learned something from it. Again, speed isn't the most important thing.
C# is Microsoft's answer to Java, and has had a far more active development cycle (Oracle hasn't done shit with Java in years). If you're familiar with C++, C# will feel very similar. The biggest difference is how it handles memory access. Pointers aren't generally used, and when they are, it's in a slightly different way.
And, yeah, the barrier to entry with doing something useful with C++ is much higher than with other languages. Since you're into gaming, that's why you see all of those middleware frameworks listed in the opening credits. Unity, Unreal, Havok, Criware, etc... modern gaming all but requires these frameworks because rolling your own is hard and incredibly time consuming.
We even see it with the web now. There's a reason why websites are built with one or more frameworks. Writing your own router, your own database access layer, a flexible template system, etc. is possible, but takes away from actually solving the problem at hand - building the website you/your client wants.
So, we rely on frameworks which are built by people who do nothing more than work on them to handle the low level boilerplate work, while we work on the main problem. It's that way across the industry.
That said, I believe it's imperative to know, at least conceptually, what's going on under the hood. So, yeah, it's important to know the difference between heap memory and stack memory, what pointers and memory addresses are, the difference between pass-by-value and pass-by-reference, etc. And it's also important to understand concepts like polymorphism, and when/why to use inheritance vs. composition, and basic design patterns and algorithms. Because - and this is especially prevalent on the web - there are far too many people who are cargo cult coders. People who learned through tutorials and only do things that way because they don't really know what's going on, but it generated the proper result for them so that's what they do.
So, no, your time wasn't wasted with C++, provided you learned something from it. Again, speed isn't the most important thing.