ToString()方法与Convert.ToString()的差异
先来看看一下这段代码:
![](/Images/OutliningIndicators/ContractedBlock.gif)
下面是它的IL代码:
![](/Images/OutliningIndicators/ContractedBlock.gif)
好了,让我再来看看另外的一段代码,最后再做分析。
![](/Images/OutliningIndicators/ContractedBlock.gif)
它的IL代码:
![](/Images/OutliningIndicators/ContractedBlock.gif)
好了,让我们来看一下它们的区别吧:
区别 | 使用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()方法。
那么究竟使用那个好那?目前正在查找资料研究中,希望大家也给我指点一下。