A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐兰文 中级黑马   /  2012-8-2 20:23  /  1907 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问a1.toString和convert.tostring(a1)区别?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

6 个回复

倒序浏览
相同点两者是把对象转成string类型。

不同点就是如果当对象为null时,如a1是null的话    a1.ToString()会抛出NullReferenceException异常,convert.toString(a1)就不会,直接返回一个null。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
a1.ToString()是调用a1的ToString()方法,a1本身转换成字符串,如果a1为null,我们调用a1的方法就会报异常。Convert.ToString()是调用Convert类的ToString()方法,在里面会判断需要转换的对象是否为null,如果是null就会返回null值,如果不是,就会调用对象的ToString()方法

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
ToSting 方法是直接将对象转换为 字符串 如果对象为空 则出现异常      
Convert.ToString() 这个类里面的方法会判断对象是不是为空 为空就返回空

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
区别:

1、代码大小上Convert.ToStrint()比ToString()小

2、加载数据上Convert.ToString()加载变量本身(IL_0003: ldloc.0),ToString()加载变量地址(IL_0003: ldloca.s   i)

3、方法调用上Convert.ToString()调用的是静态方法,而ToString()调用的是实例化的方法

Convert.ToString():IL_0004: call       string [mscorlib]System.Convert::ToString(int32)

ToString():IL_0005: call       instance string [mscorlib]System.Int32::ToString()

使用时如果转换null值则ToString()会抛NullReferenceException 而Convert.ToString()则会返回空字符串,据体使用哪个好,目前倾向于Convert.ToStrint(),具体情况具体分析

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
我总结下:
1. 可转换类型的不同
Convert.ToInt32()几乎可以把各种类型(包括object 引用类型)的值转换为int类型。
int.Parse()只能转化string。
2. 对null的处理
Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。
3.       对浮点数的处理
Convert.ToInt32(double value)
如果 value 为两个整数中间的数字,则返回二者中的偶数;即3.5转换为4,4.5 转换为4,而5.5转换为6。不过4.6可以转换为5,4.4转换为4
int.Parse("4.5")
运行的时候报错:"输入字符串的格式不正确".
4性能方面
差别不大

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
ToSting 方法是直接将对象转换为字符串  对象为空则出现异常 a1.toString   这里a1不能为空
Convert.ToString() 方法会判断对象是不是为空,为空就返回null convert.tostring(a1)  这里a1可以为空

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马