• 什么是“托管(managed)”\ 如何与非托管代码交互?


    术语“托管(managed)”是许多混乱产生的起因,在.NET中,它被用于许多不同的地方,所表达的东西有着细微的差别。

    托管代码(Managed code):.NET framewor为运行在它里面的程序提供了数个核心运行时服务,例如异常处理和安全。为了使这些服务能够运作起来,代码必须向运行时提供最起码的信息,这样的代码被称为托管代码。默认来说,所有C#和Visual Basic.NET代码都是托管的。VS7 C++代码缺省来说不是托管的,但可以通过指定命令行开关(/com+),使编译器生成托管代码。

    托管数据(Managed data):这些数据由.NET运行时垃圾收集器进行配置和清除。C#和VB.NET数据总是托管的,默认来说,VS7 C++数据是非托管的,即使使用/com+开关也是如此,但可以用__gc关键字将其标记为托管的。

    托管类(Managed classes):通常在C++托管扩展(Managed Extensions for C++)背景下谈及这个术语。当使用ME C++时,类别可标以__gc关键字。正如名字所暗示的,这意味着这个类的实体所占用的内存由垃圾收集器托管,但意思还不仅于此。这个类变成了一个完全交付给.NET大家庭的成员,它可享受.NET所带来的好处,同时也受.NET施加的有关制约。关于好处的一个例子是可以和其它语言编写的类很好地互操作,例如,一个managed C++类可以继承自一个VB类。关于约束的一个例子是,托管类只能继承自一个基类。

  • 相关阅读:
    cmake学习笔记之add_library、target_link_libraries和link_directories
    Linux的.a、.so和.o文件及链接时的命名
    【CH2401】送礼物
    【POJ1011】Sticks
    【CH2101】可达性统计
    【CH2201】小猫爬山
    【HNOI2002】营业额统计
    【洛谷P3128】最大流
    【JLOI2014】松鼠的新家
    【洛谷P4552】IncDec Sequence
  • 原文地址:https://www.cnblogs.com/silva/p/731924.html
Copyright © 2020-2023  润新知