C# and the rest the VM languages have an incredibly high overhead when compared to native win programiing.

Why would anyone choose to go this route?

I have no choice but after comparing the implementation of a simple rank/hash lookup in c#, then comparing the same code to C I am underwhelmed.