With C# you have a ceiling of high-level code - a ceiling of abstraction, on the other side you have a floor you can't break - you cannot go too low-level either. In C# you will have to use reflection or annotations or something horrible as that, to go further, and it is really really really slow. One other downside of C# is quite slow compilation, and you have to bundle the entire runtime if you want to send your executable to a friend. The pros are good documentation, a stable, safe and nice language, compiler errors are searchable, haven't seen any compiler bugs, huge ecosystem of libraries and a large stdlib, kind of portable too, and speed is ok compared to scripting languages.
Nim is the best language, but you can port C# code over once you know enough