浅谈ToString()和Convert.ToString()的用法区别

转载 2013年12月05日 10:57:30

ToString()和Convert.ToString()的用法区别  

2011-10-26 23:38:01|  分类: C# 类 |  标签: |字号 订阅

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

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


三、应用举例
我在这里举一个常见的例子,就是平常的网页参数传递,比如在网页登录验证中从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,大家可以根据自己的实际需要来决定使用哪一个方法更合适。

四、补充说明
一般从 object 到 string 有四种方式(比如有object obj),包括显式转换和as关键词的使用:obj.ToString()、Convert.ToString()、(string)obj、obj as string。他们都能将 object 对象转换成 string 对象。这里十万个为什么再接前文重点讲讲他们的异同以及在实际编程中如何选用。
前两个方法通常是由别的对象得到 string 对象,它们间的区别如前文所述主要表现在要转换的对象为 null 时,如果 obj 为 null,调用 obj.ToString 方法会导致 NullReferenceException 异常,调用 Convert.ToString 不会抛出异常而返回一个空字符串。


用强制转换 (string)obj 要求 obj 的运行时类型必须是 string。如果不是,就会抛出异常。
用 as 方法则会相对平稳,当 obj 的运行时类型不是 string 时会返回 null 而不抛出异常。


所以在通常在我们需要得到某个对象的 string 表达形式时,我们应该使用 ToString 和 Convert.ToString,这时候你就得根据情形选一个,假如你能保证你的对象不为 null,则两个差不多。如果有可能为 null,你就应该用 Convert.ToString,如果你希望它为 null 的时候抛出异常,那么当然可以选择 ToString。


最后再补充一下:
这里是说 object 到 string,如果在其它类型上(比如继承自object的其他类)调用第一种 ToString(),得到的不一定是实际的内容,可能是对该类的描述,这主要取决于该类如何实现 ToString() 方法了。


C#Tostring()格式转换

C# Tostring() 格式大全 [转] C     货币     2.5.ToString("C")     ¥2.50 ...
  • vampire801_Lee
  • vampire801_Lee
  • 2017年01月03日 12:41
  • 235

Java中toString方法作用

C#里面也有个ToString,注意大小写的不同 Java的toString的和C#的ToString完全不是同一概念,首先toString是一个"自我描述"的方法,然后它可以被重写 ...
  • holandstone
  • holandstone
  • 2014年04月09日 10:38
  • 32266

DateTime.ToString()的各种日期格式及互转

DateTime.ToString()可以设置自己想要的各种日期格式,只要在ToString()中设置要显示的日期的显示格式即可。 例: ToString:2016/5/2 0:00:00 ToStr...
  • wangzl1163
  • wangzl1163
  • 2016年05月09日 15:26
  • 4145

JAVA编程思想(第4版) toString()的用法小结

使用Arrays.toString(a)将a(int型数组)转化为字符串形式,即产生可以打印的一维数组版本。 需要String对象同字符串“obj="相加,所以编译器会调用toString()方法将对...
  • u014621130
  • u014621130
  • 2015年04月09日 17:09
  • 652

Javascript 深入了解Javascript 基础知识

eval, Function构造函数
  • cexo425
  • cexo425
  • 2014年08月26日 16:45
  • 1305

js基础知识五(String()函数,toString()函数)

js基础知识五(String()函数,toString()函数)来自李炎恢老师js讲义   String类型用于表示由于零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号...
  • qq_29817411
  • qq_29817411
  • 2016年02月24日 16:30
  • 456

关于String类之toString()方法的细节

Object是所有类的父类,编译器在编译我们的自定义类文件时,会自动将Object类加入到我们的class文件中,toString()是定义在Object中的一个方法,String类是Object的子...
  • jiaobuchong
  • jiaobuchong
  • 2015年07月23日 11:15
  • 5013

java反射实现的通用toString

包括基本数据类型的数组都可以使用该方法转String
  • u010343795
  • u010343795
  • 2015年07月19日 11:36
  • 1169

关于重写toString方法

关于重写toString
  • zhengwei223
  • zhengwei223
  • 2015年06月27日 20:16
  • 4315

toString的用法

toString 1.它是Object里面已经有了的方法,而所有类都是继承Object,所有“所有对象 都有这个方法”。 2.它通常只是为了方便输出,比如 System.o...
  • u014473378
  • u014473378
  • 2014年04月19日 14:19
  • 331
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅谈ToString()和Convert.ToString()的用法区别
举报原因:
原因补充:

(最多只允许输入30个字)