我创建了以下简单方法:
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
}
最后我尝试使用以下命令将 MSIL 代码写入我的 C# 代码中#if IL
我发现的窍门here http://www.codeproject.com/Articles/438868/Inline-MSIL-in-Csharp-VB-NET-and-Generic-Pointers.
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
s 以及有和没有#else
,但 Visual Studio 从未编译过 MSIL 代码。我的错误在哪里或者是否有其他方法(如果有方法)将 MSIL 代码写入 C# 代码?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)