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

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

 2009-06-03 08:30:41 来源:WEB开发网   
核心提示: l 这个方法会连接两个字符串并在栈上创建一个新的字符串,l 这个合成的字符串会被存储在变量V_1中,《C# to IL》第四章 关键字和操作符(上)(6),l 最后,这个合成的字符串会被打印出来,我们推论出C#编译器对字符串的处理是非常轻松的,下一个版本将会引进更多这样的类,在C#中,有两

l 这个方法会连接两个字符串并在栈上创建一个新的字符串。

l 这个合成的字符串会被存储在变量V_1中。

l 最后,这个合成的字符串会被打印出来。

在C#中,有两个PLUS(+)操作符。

l 一个处理字符串。这个操作符会被转换为IL中String类的Concat函数。

l 另一个则处理数字。这个操作符会被转换为IL中的add指令。

从而,String类和它的函数是在C#编译器中创建的。因此我们能够断定,C#可以理解并处理字符串运算。

a.cs

class zzz
{
public static void Main()
{
string a = "bye";
string b = "bye";
System.Console.WriteLine(a == b);
}
}

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      "bye"
stloc.0
ldstr      "bye"
stloc.1
ldloc.0
ldloc.1
call bool [mscorlib]System.String::Equals(class System.String,class System.String)
call void [mscorlib]System.Console::WriteLine(bool)
ret
}
}

Output

True

就像+操作符那样,当==操作符和字符串一起使用时,编译器会将其转换为函数Equals。

从上面的例子中,我们推论出C#编译器对字符串的处理是非常轻松的。下一个版本将会引进更多这样的类,编译器将会从直观上理解它们。

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

Tags:to IL 第四章

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