Code that you develop with a language compiler that targets the runtime is called managed code; it benefits from features such as cross-language integration, cross-language exception handling, enhanced security, versioning and deployment support, a simplified model for component interaction, and debugging and profiling services. Every loadable common language runtime portable executable (PE) file contains metadata
Runtime features include:
Cross-language integration, especially cross-language inheritance.
Garbage collection, which manages object lifetime so that reference counting is unnecessary.
Self-describing objects, which make using Interface Definition Language (IDL) unnecessary.
The ability to compile once and run on any CPU and operating system that supports the runtime.