WEB开发网
开发学院软件开发C语言 《C# to IL》第四章 关键字和操作符(上) 阅读

《C# to IL》第四章 关键字和操作符(上)

 2009-06-03 08:30:41 来源:WEB开发网   
核心提示: a.csnamespace mukhi{class zzz{public static void Main(){}}}namespace mukhi{class pqr{}}a.il.assembly mukhi {}.namespace mukhi{.class private auto

a.cs

namespace mukhi
{
class zzz
{
public static void Main()
{
}
}
}
namespace mukhi
{
class pqr
{
}
}

a.il

.assembly mukhi {}
.namespace mukhi
{
.class private auto ansi zzz extends [mscorlib]System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
ret
}
}
.class private auto ansi pqr extends [mscorlib]System.Object
{
}
}

在C#文件中,我们可能有2个名为mukhi的命名空间,但是它们会变成IL文件中的一个大的命名空间,而它们的内容会被合并。合并命名空间的工具是由C#编译器提供的。

设计者认为这么处理是恰当的——他们本可以将上面的程序替代地标记为一个错误。

a.cs

class zzz
{
public static void Main()
{
int i = 6;
zzz a = new zzz();
a.abc(ref i);
System.Console.WriteLine(i);
}
public void abc(ref int i)
{
i = 10;
}
}

a.il

.assembly mukhi {}
.class private auto ansi zzz extends [mscorlib]System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
.locals (int32 V_0,class zzz V_1)
ldc.i4.6
stloc.0
newobj instance void zzz::.ctor()
stloc.1
ldloc.1
ldloca.s V_0
call instance void zzz::abc(int32&)
ldloc.0
call void [mscorlib]System.Console::WriteLine(int32)
ret
}
.method public hidebysig instance void abc(int32& i) il managed
{
ldarg.1
ldc.i4.s   10
stind.i4
ret
}
}

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

Tags:to IL 第四章

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