惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
IT之家
IT之家
Last Week in AI
Last Week in AI
J
Java Code Geeks
L
LangChain Blog
Recent Announcements
Recent Announcements
Martin Fowler
Martin Fowler
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
博客园 - Franky
博客园 - 司徒正美
月光博客
月光博客
博客园 - 叶小钗
Vercel News
Vercel News
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
B
Blog RSS Feed
人人都是产品经理
人人都是产品经理
H
Help Net Security
G
Google Developers Blog
D
DataBreaches.Net

博客园 - 啊不才

【转载备用】Linux内核编译 幸运的Windows 7 Party 社区活动 jQueryinAction学习笔记——01 - 啊不才 - 博客园 django的字符替换问题 如何在屏幕中央打开一个特定的窗口 KB937061和KB947738多次安装问题 BlogEngine.Net的皮肤 [How Do I]系列学习笔记——001:学习一些技巧 继承类中override和new的区别 我提交的ACM题库的答案 『框架设计(第2版)CLR Via C#』学习笔记——使用is和as操作符来进行强制类型转换 调用Master页面上的属性 NotePad++很好用,但是我真的不想再用它了 BlogEngine的SQL Server数据库配置 关于asp:ScriptManager与Script代码块的位置关系问题 NHiBernate学习笔记(1) 使用JMail.NET时遇到的问题 『框架设计(第2版)CLR Via C#』学习笔记——常量 【已解决,看后文】使用BlogEngine.net的扩展插件Silverlight Player Extension遇到的问题
ToString()方法与Convert.ToString()的差异
啊不才 · 2008-03-15 · via 博客园 - 啊不才

先来看看一下这段代码:

使用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()方法。

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