ToString()方法与Convert.ToString()的差异

先来看看一下这段代码:

使用ToString()方法的代码

下面是它的IL代码:
使用ToString()的IL代码

好了,让我再来看看另外的一段代码,最后再做分析。

使用Convert.ToString()的代码

它的IL代码:

使用Convert.ToString()的IL代码

好了,让我们来看一下它们的区别吧:
区别 使用ToString()的代码 使用Convert.ToString()的代码
Code size 12 (0xc) 11 (0xb)
IL代码的第11行 ldloca.s   i ldloc.0
IL代码的第12行 call       instance string [mscorlib]System.Int32::ToString()
call       string [mscorlib]System.Convert::ToString(int32)

总结一下:
首先,使用Convert.TOString()方法编译出来的代码较小;
其次,ldloca.s的作用是:将位于特定索引处的局部变量的地址加载到计算堆栈上(短格式)。而ldloc的作用是:将指定索引处的局部变量加载到计算堆栈上。也就是说它们的区别在于一个加载变量的地址,一个加载变量自身。
再有,就是最后调用转换方法时,一个是实例方法,另一个是Convert的静态ToString()方法。

那么究竟使用那个好那?目前正在查找资料研究中,希望大家也给我指点一下。

posted on 2008-03-15 14:45  啊不才  阅读(2051)  评论(0编辑  收藏  举报

导航