CLS: “common language specification”, set of rules that describe what features a .NET-aware compiler must support to produce code that can be hosted by the CLR. It’s a subset of the full functionality defined by the CTS (common type specification).
CLR: “common language runtime”, mscoree.dll:
- resolves the location of an assembly
- finds the requested type in the binary (by reading metadata)
- lays out the type in memory
- compiles associated CIL into platform specific instructions
- performs security checks
- executes the code
Using keyword is just shorthand notation, using it or the fully qualified name has no effect on performance or the size of the assembly. CIL code always uses fully qualified names.
CLI: “common language infrastructure”, ecma spec, describes executable code and runtime environment for .NET