Each language, I suppose, has its own pros and cons from security perspective, but I'm not sure if they can necessarily be classified on the worst-to-best scale.
Many languages, for example, are domain specific, and thus a whole category of security implications may not be applicable to them (or even make them comparable). For example, SQL is a language, but is not a stack-based one, and so it doesn't have a concept of a call-stack (
exec statement notwithstanding) and thus stack corruption attacks are not applicable to the SQL language itself (but may still be applicable to SQL DB and/or parser). So you could argue that it's safer (i.e. "better" as you defined it) though I don't really see how you can compare the two as the two have vastly different in capabilities, applicability, purpose, etc.
In other cases, languages may be implementation dependent. In other words, it depends on the interpreter / compiler following the language specifications and specifications being unambiguous. It itself can fall to coding / logic errors.
C# certainly has some mechanisms built into the language/framework that solves some of the pain-points when compared to C/C++. Buffer overflows is certainly one popular attack vector as it is way too easy to make this category of mistake in C/C++, and C# makes it harder (not impossible though as it does allow
unsafe constructs), but also has its pitfalls. (That said, given a choice and suitability of both languages for a given task, I'd likely choose C# over C++ in part for it making some of these aspects easier to deal with.) However, vulnerabilities such as SQLI or XSS are not language dependent (though perhaps framework-dependent) but rather are errors of data sanitation / logic. I suppose a website developed in any language (as opposed to framework) would have susceptibility to XSS/SQLI if not careful. Most certainly no language can definitively protect from programmer exposing data that shouldn't be exposed due to logic errors.