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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© /fendou 中级黑马   /  2014-5-27 15:41  /  1784 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 /fendou 于 2014-5-27 20:07 编辑

object objFlow = SQLHelper.ExecuteScalar();string strFlow = objFlow.ToString();

可以获取值 是 111.54

string strFlow = SQLHelper.ExecuteScalar() as string;

转换出来 是 null

帮忙解释下 Object.ToString() 和 Object as string 的区别 谢谢了

8 个回复

倒序浏览
Convert.ToString((object)null) == ""
Convert.ToString(null)== null
通常 object 到 string 有四种方式(假设有object obj):obj.ToString()、Convert.ToString()

、(string)obj、obj as string。他们都能将 object 对象转换成 string 对象。我就讲讲他们的

异同以及在实际中应该使用哪个。



前两个方法通常是由别的对象得到 string 对象,它们间的区别只表现在要转换的对象为 null 时

,如果 obj 为 null,调用 obj.ToString 方法会导致 NullReferenceException 异常,调用

Convert.ToString 不会抛出异常而返回一个 null。



用强制转换 (string)obj 要求 obj 的运行时类型必须是 string。如果不是,就会抛出异常。

用 as 方法则会相对平稳,当 obj 的运行时类型不是 string 时会返回 null 而不抛出异常。



所以在通常在我们需要得到某个对象的 string 表达形式时,我们应该使用 ToString 和

Convert.ToString,这时候你就得根据情形选一个,假如你能保证你的对象不为 null,则两个差不

多。如果有可能为 null,你就应该用 Convert.ToString,如果你希望它为 null 的时候抛出异常

,那么当然可以选择 ToString。
回复 使用道具 举报
楼上答得好,受教了
回复 使用道具 举报
虽然看不太懂  正在学习中
回复 使用道具 举报
谢谢 二楼!明白了 呵呵
回复 使用道具 举报
其实 as 是不是就是表示类型之间的转换呢!只有可以转换成string类型的可以使用as 不知道这样说对不对哦 呵呵
回复 使用道具 举报
好好学习下,二楼回答的很好
回复 使用道具 举报
个人理解 Object.ToString()是直接将一个对象转换成为字符串,没有判断的成分 而  Object as string带有一重判断的成分
回复 使用道具 举报
azve 中级黑马 2014-5-31 11:57:52
9#
obj  as string  和 (string)obj 是一个意思 就是拆箱的过程,必须保证obj是一个string类型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马