内联MSIL / CIL

时间:2014-01-06 17:31:54

标签: c# inline cil

我创建了以下简单方法:

public static void Main () {
    Console.WriteLine("Hello world!");
    Console.ReadKey(true);
}

然后我使用ILSpy获取MSIL代码:

.method public hidebysig static void Main() cil managed {
    .entrypoint
    .maxstack  8
    nop
    ldstr "Hello world!"
    call void [mscorlib]System.Console::WriteLine(string)
    nop
    ldc.i4.1
    call valuetype [mscorlib]System.ConsoleKeyInfo [mscorlib]System.Console::ReadKey(bool)
    pop
    ret
}

最后,我尝试使用我发现here#if IL技巧将MSIL代码写入我的C#代码。

public static void Main () {
    #if IL
        nop
        ldstr "Hello world!"
        call void [mscorlib]System.Console::WriteLine(string)
        nop
        ldc.i4.1
        call valuetype [mscorlib]System.ConsoleKeyInfo [mscorlib]System.Console::ReadKey(bool)
        pop
        ret
    #else
        Console.WriteLine("Hello world!");
        Console.ReadKey(true);
    #endif
}

我尝试使用和不使用nop以及使用和不使用#else时使用此技巧,但Visual Studio从未编译过MSIL代码。我的错误在哪里,或者有另一种方法(如果有办法)将MSIL代码写入C#代码?

0 个答案:

没有答案