我有时在谈论 .NET 时听到/读到它,例如"托管代码"和"非托管代码",但我不知道它们是什么以及它们的区别是什么。

答案

托管代码

托管代码是Visual Basic . net和C管理由 CLR 执行。"

Visual Basic和C仅有的生成托管代码,因此,如果您使用其中一种语言编写应用程序,那么您正在编写由 CLR 管理的应用程序。

非托管代码

非托管代码直接编译为机器代码。

没有免费的内存管理或 CLR 提供的任何其他内容。

既然你不能用Visual Basic或C创建非托管代码

混合两者

由于 Visual C 可以编译为托管代码或非托管代码,因此可以在同一应用程序中混合使用这两种代码。

这是我找到的一个例子谷歌搜索:

#using <mscorlib.dll>
using namespace System;

#include "stdio.h"

void ManagedFunction()
{
    printf("Hello, I'm managed in this section\n");
}

#pragma unmanaged
UnmanagedFunction()
{
    printf("Hello, I am unmanaged through the wonder of IJW!\n");
    ManagedFunction();
}

#pragma managed
int main()
{
    UnmanagedFunction();
    return 0;
}

来自: stackoverflow.com