C#学习之ToString()和Convert.ToString()的用法区别
来源:互联网 发布:淘宝客服的常用语 编辑:程序博客网 时间:2024/06/06 01:17
一、概念说明
在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;
四、补充说明
一般从 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#中所有继承自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,大家可以根据自己的实际需要来决定使用哪一个方法更合适。
3、补充另外一个应用列子:
Convert.ToString(byte, 16):将当前数值(byte)转换成16进制;(可参看实际项目)
Conver.ToString()有很多种方法,可参看MSDN;
四、补充说明
一般从 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() 方法了。
0 0
- C#学习之ToString()和Convert.ToString()的用法区别
- 学习C#中toString()和Convert.toString()的用法区别
- ToString()和Convert.ToString()的用法区别
- ToString()和Convert.ToString()的用法区别
- ToString()和Convert.ToString()的用法区别
- ToString()和Convert.ToString()的用法区别
- ToString()和Convert.ToString()的用法区别
- C# ToString()和Convert.ToString()的区别
- 浅谈ToString()和Convert.ToString()的用法区别
- c# Convert.ToString()和 .ToString()的区别
- C# Convert.ToString()与.ToString()的区别
- ToString()和Convert.ToString()的区别
- Convert.ToString()和ToString()的区别
- ToString()和Convert.ToString()字符串转换的区别
- ToString Convert.ToString和(string)区别
- ToString Convert.ToString和(string)区别
- Convert.ToString()和ToString()区别在哪里?
- ToString()和Convert.ToString()
- Java设计模式----适配器模式
- sql 读取excle 中数据
- iOS 跳转到Appstore对应的应用
- 题目1163:素数 九度OJ
- Java对象序列化
- C#学习之ToString()和Convert.ToString()的用法区别
- js的36个设计模式:行为型模式
- 文字在div中水平均匀分布
- JAVA学习笔记:随机数(Math类和Random类生成的随机数)
- 浅谈HTTP中Get与Post的区别
- python使用pyquery库总结
- Struts2文件上传
- js的36个设计模式:技巧型模式
- linux学习笔记(1)