'CTS' is an abbreviation of Common Type System and it is used to handle translation of programming-language data types into .NET compatible (MSIL) data types.
Microsoft Intermediate Language (MSIL)
The CTS provides every language running on the .NET platform with a base set of data types. While the CTS is responsible for defining the types that can be used across the .NET languages, most languages choose to implement aliases to those types. For example, a four-byte integer value is represented by the CTS type System.Int32. C# defines an alias for this called type called int.
Every thing in the CTS is an object. Not only is everything an object but even more importantly, all objects implicitly derive from a single base class defined as a part of the CTS. This base class is called System.Object. The designers of CTS were faced with the task of creating a type system in which every thing is an object, but the type system works in an efficient manner , when applicable. Their solution was to separate the CTS types into two categories:
VALUE TYPES ( assigning actual values to the variables)
REFERENCE TYPES (referencing to point to the address of the object)