我有时在谈论 .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;
}