My C# story: We were a Visual Basic 6 shop, writing COM+ components being called by classic ASP pages. Microsoft .NET had just been announced and we spent some time doing an evaluation between it and Java (JSPs and Beans) - our brand new CTO was concerned about Microsoft technology being a monoculture and felt that Java would allow us to pick from several competing vendors so we could be using the best of breed[0].
We spent several months doing a technical comparison. And in the final meeting they went around the room getting opinions from everyone. All but one chose .NET (the dissenter was: "Whatever you think, boss"). The CTO said "That settles it. We're going with Java."[1]
So we spent hundreds of thousands on Oracle database licenses (because if you're changing languages, might as well change databases too, right?) and consultants to write a prototype. When they were done, it scaled to a grand total of two concurrent users on the fastest Compaq servers we had. While our existing VB code was serving about two hundred. Again, mature technology vs. immature technology.
I've been a big fan of C# since then. While I think the latest changes to the language and runtime are mostly eye candy (how hard is it to have a Main method, really?) there's some good stuff in there (I spent some time looking at System.Threading.Channels recently)
[0] The idea isn't bad, but what happens in practice is you get about 2 top-tier vendors and a bunch of also-rans.
[1] When choosing a technology stack, the CTO will pick what they want and everyone else's opinions are secondary. I think this must be a corollary to the "When a business moves, it's always closer to the CEO's house" rule.
[1] https://en.wikipedia.org/wiki/Anders_Hejlsberg