- CLR (Common Language Runtime)
- CLS (Common Language Specification)
- CTS (Common Type Systems)
A CLR is a construct provide by the .NET framework that provides several functionalities to all .NET applications like memory management, security, Garbage collection, language independency, cross language exception handling, cross language inheritance, etc.
CTS consist of all the types supported by .NET like bool, struct, enum etc; and thus keep the .net applications type safe.
CLR manages the execution of code and provides different services for Base Class Libraries etc.
CLR is a rich set of features for cross-language development and deployment.
CLR supports both Object Oriented Languages as well as procedural languages.
CTS support both Object Oriented Programming languages as well as procedural languages. Basically CTS provides rich type system that is intended to support wide range of languages.
CLS defines a subset of CTS, which all language compilers targeting CLR must adhere to. All compilers under .NET will generate (IL) Intermediate Language no matter what language is used to develop an application.
In fact, CLR will not be aware of the language used to develop an application. All language compilers will generate a uniform, common language called Intermediate Language. For this reason IL can be called as The language of CLR A platform for cross language development.
CLR is a set of standard resources that (in theory) any .NET program can take advantage of, regardless of programming language.
CTS are the range of types that the .NET runtime understands, and therefore that .NET applications can use.