在.NET框架中,程序源代码经过编译后会生成中间语言(Intermediate Language, IL)代码,又称为托管代码。托管代码并不是面向特定硬件平台的机器代码,而是由.NET运行时编译器(JIT Compiler)将其转化为适合特定硬件平台的机器码。下面是一个简单的C#代码示例:
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
在编译这个程序时,会生成一个名为 Program.exe 的可执行文件和一个 Program.exe.config 配置文件。Program.exe 文件就是包含托管代码的二进制文件,可以使用.NET反编译工具来查看其对应的IL代码。例如,使用ILSpy工具可以看到IL代码如下:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 12 (0xc)
.maxstack 8
IL_0000: nop
IL_0001: ldstr "Hello, World!"
IL_0006: call void [mscorlib]System.Console::WriteLine(string)
IL_000b: ret
}
因此,编译后会生成托管代码。