I don't doubt your comment, but I immediately thought to compare to Java. Why does Java have exactly what you mention -- "second or third alternatives for every basic thing"? Is it easily explained by age as a language? Also, can you provide a concrete example of something that .NET includes in the core that Java does not?