- It supports structs, and unboxable structs called "ref structs". They let you to avoid GC/heap-alloc for small data structures with clear ownership semantics.
- It uses type reification for generics instead of type erasure. Combined with value-types, this can produce very optimized code. The downside is larger binary sizes.
- It allows unsafe programming with pointer arithmetic where performance is truly critical. This is where C# is closer to C/C++ than Java.
- Supports native compilation to a target architecture. This lets you avoid JIT overhead and lets you ship self-contained binaries (like Go).
- .NET supports source generators which can let you keep maintainable code and generate an optimized one.
Performance aside, C# is a very pleasant language to use, and .NET is a delightful runtime. I'd say give it a try and see it for yourself.
The main target is enterprise software systems and web backends. Asp.Net is a very mature framework for Web APIs and MVC applications.
Entity Framework is a decent ORM solution supporting several popular DBs with tools for code generation and migrations, and LINQ is a complementary query language that is useful for in-memory collection operations as well as db queries.
And I think the largest value is in the NuGet software library ecosystem, things like MassTransit for service bus and queue communication and many many others.
It’s a well-supported ecosystem of first party and third party software with a lot of modern features, but definitely still in the realm of managed runtimes so not a competitor to C, Rust, etc.
*ASP.NET Core
Microsoft relies on "fire and motion"¹ to sell to developers, and typically reimplements instead of working with open source projects.
Recent example: only Visual Studio 2022 supports .NET 6, time to upgrade.
https://learnxinyminutes.com/docs/csharp/
it looks more like Java than c++ to me.
On a different note, I will state this again: I think microsoft will acquire Canonical one day.