CTS(Common Type System) : In order that the two language communicate smoothly CLR has CTS (Common Type System). Example in VB you have "Integer" and in C++ you have "long" these data types are not compatible so the interfacing between them is very complicated. In order to able that the two different languages can communicate Microsoft introduced the Common Type System. So "Integer" datatype in VB6 and "int" datatype in C++ will convert it to System.int32 which is the datatype of CTS. The CLS which is covered in the coming question is the subset of CTS.CLS(Common Language Specification) : This is a subset of the CTS which all the languages of the .NET are expected to support. This was always the dream of Microsoft to combine all different languages in to one umbrella and CLS is one step towards that. Microsoft has defined the CLS which are nothing but guidelines that language to follow so that it can communicate with all the other .NET languages in a seamless manner.Managed Code : Managed code runs in the environment of CLR that is .NET runtime. In other way all IL are managed code. But if you are using some other third party software example VB6 or VC++ component they are unmanaged code as .NET runtime (CLR) do not have control over the source code execution of the language.