C# is the future. It overtook D in a matter of months.
They don't have the same purpose; C# is meant for application development, D (and C++) is for systems programming.
That said, I want to agree that C# pretty much pwns everything at the moment. It has been used to develop operating systems (1
), so it's demonstrated its viability for systems programming even though that's not its original vocation. D looks very well-designed, seemingly better than C# (at least the way it handles generics and compile-time evaluation of functions), but it's not a CLI language and as such it's isolated from the rich ecosystem of libraries and languages built around .NET.
A lot of platforms today don't support .NET, and by platforms I mean every piece of electronic equipment we use including computer hardware (device drivers), routers, cars, airplanes, gps, etc. Then again, they often only support C (not even C++!), so there's little hope for D there as well.
So, for D, the only avenue I see is for new performance-critical components for PC applications, which would currently require C++. Whenever performance is not an absolute, a .NET language will be better simply because of the interoperability with .NET libraries and other CLI languages.