The Common Language Runtime (CLR) is explicitly designed to support multiple languages. In general, though, languages built on the CLR tend to have a good deal in common. By defining a large set of core semantics, the CLR also defines a large part of a typical programming language built using it. For example, a substantial chunk of learning any CLR-based language is seeing how the standard types defined by the CLR are mapped into that language. You must also learn the language’s syntax, of course, including the control structures the language provides. Yet once you know what the CLR offers, you’re a long way down the path to learning any language built on top of it.