You can use C# for pretty much anything the question is how convenient it is to do so. There are even some people who try to use .NET with embedded systems. I would use C++ only in cases where performance is the most important aspect of the product and even that niche grows smaller and smaller as time marches on. For example, at my current job we are using C# to implement some pretty intense image processing algorithms. Initially we wanted to use C++ for the performance critical parts, but we are still well within our performance targets using C# alone.
When should a programmer use C over Python?
They both solve different kinds of problems. C# has a lot of overhead built into the language compared to C++, but it is also a lot easier to write. Unless you need C++ or prefer it due to experience/performance/etc, there’s no reason to choose it over C#, JS, Python, or any other language really.
So to answer your question, thet should use C++ if they need to or will work more effectively in C++, or if the contributors want to.
Nowhere. Until you have a reason to.
Maybe it’s integration, or existing code, or performance, or close to hardware, or reference lib or docs
In most industries and cases, you probably won’t have to, and it makes no sense to.
-
you need predictable latency
-
you don’t want garbage collection
-
you don’t like MS
-
toolchain doesn’t exist for your target
-
It’s entirely depdent on the project and the team. Use C++ when you need something low level. Use C# when you need a very high level language and want to create an object oriented mess. Honestly, people will shit on C# all day long, but as far as utility goes, it is a fine language. People get caught up in the, well deserved, MS hate and ignore that it is a powerful performant language. Would people actually choose Java over C#? Dotnet compiles to Linux without having to install the Dotnet SDK on the Linux machine. It’s not Windows only anymore.
When you don’t want to depend on .NET runtime. And if there are libraries you want to use that is available in C++, but not in C#.
When you don’t want to depend on .NET runtime.
Oh wow! Since when is this possible? I looked it up, it even works with Linux (and bunch of other OSes).
I think they added AOT with .NET 6 and they are supporting Linux ever since the .Net Framework, .NET Core split.
Microsoft has been working on AOT a lot for a few years now, for the last few dotnet versions. More and more became trimmable and compilable.
Everywhere except some Windows only apps.




