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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王雪磊 中级黑马   /  2012-4-14 08:30  /  1730 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

convert.tostring(str) 与
str.tostring()有什么区别,str.tostring貌似一旦转换为空的话就会出异常,convert.tostring(str)没有这个问题,这个是怎么回事呀?求大虾帮忙

评分

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

查看全部评分

6 个回复

倒序浏览
1、一般用法说明
在C#中所有继承自object的类都有tostring()方法,在没有特别声明的情况下,C#中的类都是默认继承自object,所以都有tostring()方法;而Convert.ToString(param)(其中param参数的数据类型可以是各基本数据类型,也可以是bool或object类对像;

2、ToString()和Convert.ToString()的区别
一般情况下,这两种方法都可以通用,但是当返回的数据类型中有可能出现null值时如果调用tostring方法了,就会返回NullReferenceException,除非你要捕捉此异常再做处理,否则在这种情况下就应考虑使用Convert.ToString()方法了,因为Convert.ToString(null)不会抛出异常而是返回空字符串.

3、应用举例
我在这里举一个常见的例子,就是平常的网页参数传递,比如在网页登录验证中从QueryString或当前会话Session中获得对应参数值,我们有下面两种方法:
1.使用Convert.ToString(param)方法:
        string strUserName = Convert.ToString(Session["UserName"]);
        string strUserPwd = Convert.ToString(Session["UserPwd"]);
2.直接调用ToString()方法:
        string strUserName = Session["UserName"].ToString;
        string strUserPwd = Session["UserPwd"].ToString;
当Session["UserName"]或Session["UserPwd"]返回null值时,使用方法1返回的值是空字符串,而直接调用ToString()方法则会抛出NullReferenceException,大家可以根据自己的实际需要来决定使用哪一个方法更合适。

评分

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

查看全部评分

回复 使用道具 举报
陈志伟 发表于 2012-4-14 08:44
1、一般用法说明
在C#中所有继承自object的类都有tostring()方法,在没有特别声明的情况下,C#中的类都是默 ...

解释的不错!
回复 使用道具 举报
当对象为null时,Convert.ToString(null) 是没问题的,而 string str = null; str.ToString() ; 就会出现错误。此种情况尤其会发生在页面绑定数据的时候。
Convert.ToString() 把Object转换成String对象
Object.ToString() 是从Object里继承来的方法。对于空引用和DBNull的对象直接调用.ToString()会引发异常

评分

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

查看全部评分

回复 使用道具 举报
C#中任何继承object类都有ToString()方法
Convert.ToString(param)方法:param类型可以是各种类型。也就是说任何类型都可以转化为string类型。
ToString()方法不可以转化NULL字符,会抛出异常,除非先做异常处理。
Convert.ToString(param)方法:param可以为NULL,返回空字符。
学习,学习!{:soso_e100:}

评分

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

查看全部评分

回复 使用道具 举报
王雪磊 来自手机 中级黑马 2012-4-15 10:21:19
地板
陈志伟 发表于 2012-4-14 08:44 1、一般用法说明 在C#中所有继承自object的类都有tostring()方法,在没有特别声明的情况下,C#中的类都是默 ...

有道理,说的比较明白
回复 使用道具 举报
陈志伟 发表于 2012-4-14 08:44
1、一般用法说明
在C#中所有继承自object的类都有tostring()方法,在没有特别声明的情况下,C#中的类都是默 ...

解释的真详细  学习下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马