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

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

 2009-06-03 08:30:41 来源:WEB开发网   
核心提示: Outputhibye下面关注的是2个字符串的连接,C#编译器通过将它们转换为一个字符串来实现,《C# to IL》第四章 关键字和操作符(上)(5),这取决于编译器优化常量的风格,存储在局部变量中的值随后被放置在栈上,l 之后,+操作符被转化为静态函数Concat,从而在运行期,C#编译

Output

hibye

下面关注的是2个字符串的连接。C#编译器通过将它们转换为一个字符串来实现。这取决于编译器优化常量的风格。存储在局部变量中的值随后被放置在栈上,从而在运行期,C#编译器会尽可能的优化代码。

a.cs

class zzz
{
public static void Main()
{
string s = "hi" ;
string t = s + "bye";
System.Console.WriteLine(t);
}
}

a.il

.assembly mukhi {}
.class private auto ansi zzz extends [mscorlib]System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
.locals (class System.String V_0,class System.String V_1)
ldstr      "hi"
stloc.0
ldloc.0
ldstr "bye"
call class System.String [mscorlib]System.String::Concat(class System.String,class System.String)
stloc.1
ldloc.1
call void [mscorlib]System.Console::WriteLine(class System.String)
ret
}
}

Output

hibye

无论编译器何时对变量进行处理,都会在编译器间忽略它们的值。在上面的程序中会执行以下步骤:

l 变量s和t会被相应地转换为V_0和V_1。

l 为局部变量V_0分配字符串"hi"。

l 随后这个变量会被放到栈上。

l 接下来,常量字符串"bye"会被放到栈上。

l 之后,+操作符被转化为静态函数Concat,它属于String类。

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

Tags:to IL 第四章

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