什么是托管代码和托管数据
2006-07-17 17:22
429 查看
转自http://www.microsoft.com/china/msdn/library/archives/library/faq111700.asp
托管代码是编写为支持公共语言运行时服务的代码(请参阅“什么是公共语言运行时?”)。为了支持这些服务,代码必须向运行时提供最小级别的信息(元数据)。默认情况下,所有 C#、Visual Basic.NET 和 JScript.NET 代码都是托管代码。Visual Studio.NET C++ 代码在默认情况下不是托管代码,但通过指定命令行开关 (/CLR),编译器也可以生成托管代码。
与托管代码密切相关的是托管数据。托管数据是由公共语言运行时的垃圾回收器进行分配和释放的数据。默认情况下,C#、Visual Basic 和 JScript.NET 数据是托管数据。不过,通过使用特殊的关键字,C# 数据可以被标记为非托管数据。Visual Studio.NET C++ 数据在默认情况下是非托管数据(即使在使用 /CLR 开关时),但是在使用 C++ 的托管扩展时,可以使用“__gc”关键字将类标记为托管类。就象该名称所显示的那样,它表示类实例的内存由垃圾回收器管理。另外,该类也完全成为 .NET 框架的成员,同时具备它所带来的好处和限制。好处的一个例子是:它可以与其他语言编写的类正确地进行互操作(如托管的 C++ 类可以从 Visual Basic 类继承);限制的一个例子是:托管类只能从一个基类继承。
托管代码是编写为支持公共语言运行时服务的代码(请参阅“什么是公共语言运行时?”)。为了支持这些服务,代码必须向运行时提供最小级别的信息(元数据)。默认情况下,所有 C#、Visual Basic.NET 和 JScript.NET 代码都是托管代码。Visual Studio.NET C++ 代码在默认情况下不是托管代码,但通过指定命令行开关 (/CLR),编译器也可以生成托管代码。
与托管代码密切相关的是托管数据。托管数据是由公共语言运行时的垃圾回收器进行分配和释放的数据。默认情况下,C#、Visual Basic 和 JScript.NET 数据是托管数据。不过,通过使用特殊的关键字,C# 数据可以被标记为非托管数据。Visual Studio.NET C++ 数据在默认情况下是非托管数据(即使在使用 /CLR 开关时),但是在使用 C++ 的托管扩展时,可以使用“__gc”关键字将类标记为托管类。就象该名称所显示的那样,它表示类实例的内存由垃圾回收器管理。另外,该类也完全成为 .NET 框架的成员,同时具备它所带来的好处和限制。好处的一个例子是:它可以与其他语言编写的类正确地进行互操作(如托管的 C++ 类可以从 Visual Basic 类继承);限制的一个例子是:托管类只能从一个基类继承。
相关文章推荐
- 什么是托管代码和托管数据
- WCF服务编程设计规范(8):服务托管、自托管代码、客户端代理类、客户端代理管理、客户端异常管理、数据契约、SOAP与REST
- 什么是com组件?什么是托管代码和非托管代码
- C#温故而知新学习系列之.NET运行机制—.NET中非托管代码是指什么?(二)
- 什么是"托管代码"?
- 如何实现把CListCtrl类中的数据存储到txt或excel中,并且存储位置可以自己选择?具体代码是什么?
- 给InfoPath添加VSTA托管代码并从SharePoint列表查询数据
- silverlight列表控件ComboBox 托管代码绑订数据集合
- .NET 托管、非托管、本地:这些代码有什么区别?
- C#与.NET程序员面试宝典 2.1.6 面试题6:C#中的托管代码是什么
- 什么是“托管(managed)”\ 如何与非托管代码交互?
- 执行数据库查询时,如果要查询的数据有很多,假设有1000万条,用什么办法可以提高查询速率?在数据库方面或java代码方面有什么优化的方法
- 通过托管代码和 Windows Vista 智能卡 API 来保护您的数据
- 通过托管代码和 Windows Vista 智能卡 API 来保护您的数据
- InfoPath进阶之二:给InfoPath添加VSTA托管代码并从SharePoint列表查询数据
- 托管代码是什么
- 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法
- 托管、非托管、本地:这些代码有什么区别?
- C# 多线程读取数据并保存在DataGridView中,如果操作?代码是什么?谢谢
- 数据集中的数据验证代码应该写在什么位置?