托管代码简介:托管代码 (managed code)同受管制的代码,由公共语言运行库环境(而不是直接由操作系统)执行的代码。
托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。
这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。
从哪来:托管代码是可以使用20多种支持Microsoft .NET Framework的高级语言编写的代码,它们包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。所有的语言共享统一的类库集合,并能被编码成为中间语言(IL)。
到哪去:运行库编译器(runtime-aware compiler)在托管执行环境下编译中间语言(IL)使之成为本地可执行的代码,并使用数组边界和索引检查,异常处理,垃圾回收等手段确保类型的安全。最终将由CLR执行该代码()。
非托管代码:在公共语言运行库环境的外部,由操作系统直接执行的代码。
区别:IL需要交给CLR执行(托管代码可以理解为IL,CLR执行的本质也是装换成机器码给操作系统执行),非托管代码(如C、C++等)由编译器转换为机器码后交给操作系统执行