通常 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。

编者注:

这里是说 object 到 string,如果在其它类型上调用第一种 ToString(),得到的不一定是实际的内容,可能是对该类的描述,这取决于该类如何实现 ToString() 方法。

转载于:https://www.cnblogs.com/tonywang711/archive/2009/10/26/ToString.html

ToString()、Convert.ToString()、(string)、as string 的区别相关推荐

  1. java converttostring_由 ToString()和Convert.ToString() 引发的问题

    对于久经沙场的程序猿来说,类型转换再熟悉不过了,在代码中我们也会经常用到. 前几天,有个学生问我关于类型转换ToString()和Convert.ToString()的区别,这么常用的东西我竟然支支吾 ...

  2. toString()、String.valueOf()、(String) 强转的区别

    在实际开发中,少不了使用这三种方法对某一个类型的数据进行转 String 的操作,那么什么情况下使用哪种方法更快捷,以及这些方法使用时的一些注意事项都有哪些呢?这篇文章参考自<掘金>上大佬 ...

  3. C# ToString()和Convert.ToString()的区别【转】

    一.一般用法说明 ToString()是Object的扩展方法,所以都有ToString()方法;而Convert.ToString(param)(其中param参数的数据类型可以是各种基本数据类型, ...

  4. Convert.ToString和ToString的区别

    Convert.ToString能处理字符串为null的情况,不抛出异常. ToString方法不能处理字符串为null的情况,会抛出异常.如:"未将对象引用设置到对象的实例". ...

  5. String与StringBuffer的区别

    String与StringBuffer的区别 简单地说,就是一个变量和常量的关系.StringBuffer对象的内容可以修改:而String对象一旦产生后就不可以被修改,重新赋值其实是两个对象. St ...

  6. JAVA中String与StringBuffer的区别

    String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结. 在java中有3个类来负责字符的操作. 1.C ...

  7. Java中stringbutter_java中string与ButterString的区别

    String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结. 在java中有3个类来负责字符的操作. 1.C ...

  8. java stringbuffer原理_深入理解String, StringBuffer, StringBuilder的区别(基于JDK1.8)

    String.StringBuffer.StringBuilder都是JAVA中常用的字符串操作类,对于他们的区别大家也都能耳熟能详,但底层到底是怎样实现的呢?今天就再深入分析下这三种字符串操作的区别 ...

  9. JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能

    JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...

最新文章

  1. android 从零单排 第一期 按键显示helloworld
  2. JqueryMobile链接一个页面,而链接页面中图片需刷新才显示的问题
  3. 反卷积在神经网络可视化上的成功应用
  4. WinAPI: 钩子回调函数之 MouseProc
  5. ASP.NET中常用输出JS脚本的类(改进版)
  6. ASP.NET MVC 4 小项目开发总结
  7. jsp mysql bbs_论坛(BBS)的设计与实现(MySql)
  8. RenderMonkey 练习 第一天 【opengl 纹理】
  9. Node.js、Express、Socket.io 入门
  10. 5000字彻底道尽「区块链分叉」真相!
  11. java学习手册下载_java学习手册
  12. PLSQL Developer详细安装步骤
  13. 某运动APP登录协议分析
  14. (社会工程学攻击)安全书籍中的重要笔记摘要
  15. mixpanel实验教程(1) 支持
  16. 蛋蛋读UFS之三:UFS数据包UPIU
  17. C语言flag(0)
  18. shell while 结束循环_Linux技巧:使用bash read命令实现一个简易shell(完整版)
  19. android锁屏页面的实现
  20. 思维导图风暴Xmind 2022中文

热门文章

  1. 【GAN】如何生动有趣地对GAN进行可视化?Google的GAN Lab推荐你了解一下
  2. 【Python进阶】实战Python图形文件操作基本编程
  3. 全球及中国婴儿痤疮药行业消费需求调研与竞争策略展望报告2022版
  4. 中国光纤管理解决方案市场发展分析及十四五规划咨询建议报告2022年版
  5. 欲了解Android Studio,必先知道Gradle
  6. Linux 自动挂载 和 fstab分区-自动挂载
  7. 51单片机 | 中断系统概念及结构
  8. Caffe学习系列(13):对训练好的模型进行fine-tune
  9. javascript 红宝书笔记之如何使用对象 如何操作数组
  10. eclipse安装birt插件