C#与.NET程序员面试宝典 2.1.6 面试题6:C#中的托管代码是什么
2010-10-19 09:38
211 查看
托管代码是.NET框架中比较重要的一个概念,这类问题经常出现在技术类的笔试题目中,本小节将向读者解释什么是托管代码。
【出现频率】★★★★★
【关键考点】
托管代码(Managed Code)
托管代码的运行
【考题分析】
托管代码(Managed Code)实际上就是中间语言(IL)代码。代码编写完毕后进行编译,此时编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码。程序集(Assembly)的文件负责封装中间语言,程序集中包含了描述所创建的方法、类以及属性的所有元数据。
托管代码在公共语言运行库(CLR)中运行。这个运行库给运行代码提供了多种服务,通常来说,公共语言运行库可以加载和验证程序集,并以此来保证中间语言的正确性。当某些方法被调用时,公共语言运行库把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用时使用。这个过程就是即时编译。
注意:程序实际上是被“托管”在公共语言运行库中。随着程序集的运行,公共语言运行库会持续地提供各种服务,例如内存管理、安全管理、线程管理等等。
【答案】
托管代码(Managed Code)是由公共语言运行库(CLR)执行的代码,而不是由操作系统直接执行。托管代码也可以调用CLR的运行库服务和功能,比如GC、类型检查、安全支持等等。这些服务和功能提供独立与开发语言的、统一的Managed Code应用程序行为。
【出现频率】★★★★★
【关键考点】
托管代码(Managed Code)
托管代码的运行
【考题分析】
托管代码(Managed Code)实际上就是中间语言(IL)代码。代码编写完毕后进行编译,此时编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器码。程序集(Assembly)的文件负责封装中间语言,程序集中包含了描述所创建的方法、类以及属性的所有元数据。
托管代码在公共语言运行库(CLR)中运行。这个运行库给运行代码提供了多种服务,通常来说,公共语言运行库可以加载和验证程序集,并以此来保证中间语言的正确性。当某些方法被调用时,公共语言运行库把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用时使用。这个过程就是即时编译。
注意:程序实际上是被“托管”在公共语言运行库中。随着程序集的运行,公共语言运行库会持续地提供各种服务,例如内存管理、安全管理、线程管理等等。
【答案】
托管代码(Managed Code)是由公共语言运行库(CLR)执行的代码,而不是由操作系统直接执行。托管代码也可以调用CLR的运行库服务和功能,比如GC、类型检查、安全支持等等。这些服务和功能提供独立与开发语言的、统一的Managed Code应用程序行为。
相关文章推荐
- C#与.NET程序员面试宝典 2.2.6 面试题13:.NET程序的开发和运行基本环境是什么
- C#与.NET程序员面试宝典 2.2.8 面试题15:.NET的应用程序域是什么
- C#与.NET程序员面试宝典 2.1.1 面试题1:ASP.NET是什么
- C#与.NET程序员面试宝典 2.1.7 面试题7:C#中的非托管代码是什么
- C#与.NET程序员面试宝典 2.1.2 面试题2:ASP.NET和ASP的区别是什么
- C#与.NET程序员面试宝典 2.3.2 面试题17:什么是Xcopy部署(图)
- C#温故而知新学习系列之.NET运行机制—.NET中非托管代码是指什么?(二)
- C#与.NET程序员面试宝典 2.2.2 面试题9:如何使用实时编译进行代码优化
- C#与.NET程序员面试宝典 2.2.3 面试题10:什么是.NET中的私有程序集
- C#托管代码与C++非托管代码互相调用一(C#调用C++代码&.net 代码安全)
- 【笔试&面试】C#的托管代码与非托管代码
- NET面试题:C#中的using语句有什么作用
- c#的托管代码和非托管代码的理解
- C#中的托管代码
- C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
- C#托管代码与C++非托管代码互相调使用一(C#调使用C++代码&.net 代码安全)
- C#托管代码与C++非托管代码互相调用二(C++调用C#代码)
- C#报错“OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码”的解决方法。
- 托管、非托管、本地:这些代码有什么区别?
- 什么是托管代码