WEB开发网
开发学院软件开发C语言 《C# to IL》第二章 IL基础 阅读

《C# to IL》第二章 IL基础

 2009-06-01 08:31:09 来源:WEB开发网   
核心提示: 静态函数会被首先调用,之后,《C# to IL》第二章 IL基础(4),带有entrypoint伪指令的函数会被调用,a.cs class zzz { public static void Main() { System.Console.WriteLine("hi")

静态函数会被首先调用,之后,带有entrypoint伪指令的函数会被调用。

a.cs

    class zzz
    {
        public static void Main()
        {
            System.Console.WriteLine("hi");
            new zzz();
        }
        zzz()
        {
            System.Console.WriteLine("bye");
        }
    }

a.il

.assembly mukhi {}
.class private auto ansi zzz extends System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
ldstr "hi"
call void System.Console::WriteLine(class System.String)
newobj instance void zzz::.ctor()
pop
ret
}
.method private hidebysig specialname rtspecialname instance void .ctor() il managed
{
ldarg.0
call instance void [mscorlib]System.Object::.ctor()
ldstr "bye"
call void [mscorlib]System.Console::WriteLine(class System.String)
ret
}
}

Output

hi

bye

在C#中的关键字new,被转换为汇编器指令newobj。这就为IL不是一门低级汇编语言并且还可以在内存中创建对象提供了证据。指令newobj在内存中创建了一个新的对象。即使在IL中,我们也不会知道new或newobj真正做了些什么。这就证实了IL并不是另一门高级语言,而是被设计为其它现代语言都能够编译为IL这样一种方式。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:to IL 第二章

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接