C# ToString()和Convert.ToString()的区别
一、一般用法说明
ToString()是Object的扩展方法,所以都有ToString()方法;而Convert.ToString(param)(其中param参数的数据类型可以是各种基本数据类型,也可以是bool或object类对象。
二、ToString()和Convert.ToString()的区别
一般情况下,这两种方法都可以通用,但是当返回的数据类型中有可能出现null值时如果调用ToString方法了,就会返回NullReferenceException,除非你要捕捉此异常再做处理,否则在这种情况下就应考虑使用Convert.ToString()方法了,因为Convert.ToString(null)不会抛出异常而是返回空字符串。

主要的区别就如上所示,由于ToString()是扩展方法,扩展自Object,所以转null报异常。而Convert.ToString()返回空字符串。
不过Convert.ToString(),作用不算太大,因为:

static void Main(string[] args)
{
string str1 = "";
Console.WriteLine(Convert.ToString(str1) == null); //false
Console.WriteLine(Convert.ToString(str1) == ""); //true string str2 = null;
Console.WriteLine(Convert.ToString(str2) == null); //true
Console.WriteLine(Convert.ToString(str2) == ""); //false Console.ReadKey();
}

null转了之后还是null,""转了之后还是""。
所以,配合上string.IsNullOrEmpty(Convert.ToString())还是比较方便的。
Console.WriteLine(string.IsNullOrEmpty(Convert.ToString(str1))); //true
Console.WriteLine(string.IsNullOrEmpty(Convert.ToString(str1))); //true
另外,如果是跟某字符串对比,那么使用Convert.ToString()还是很方便的,例如
if(Convert.ToString(str) == "123")
{ }
三、object到string的转换
从 object 到 string 大致有四种方式,包括显式转换和as关键词的使用:obj.ToString()、Convert.ToString()、(string)obj、obj as string。他们都能将 object 对象转换成 string 对象。
前两个方法通常是由别的对象得到 string 对象,它们间的区别如前文所述主要表现在:
- ToString() :如果 obj 为 null,调用 obj.ToString() 方法会导致 NullReferenceException 异常。
- Convert.ToString():如果 obj 为 null,调用 Convert.ToString()会返回null
- (string):用强制转换 (string)obj 要求 obj 的运行时类型必须是 string。如果不是,就会抛出异常。
- as :用 as 方法则会相对平稳,当 obj 的运行时类型不是 string 时会返回 null 而不抛出异常。
所以在通常在我们需要得到某个对象的 string 表达形式时,我们应该使用 ToString() 和 Convert.ToString(),这时候你就得根据情形选一个,假如你能保证你的对象不为 null,则两个差不多。如果有可能为 null,你就应该用 Convert.ToString(),如果你希望它为 null 的时候抛出异常,那么当然可以选择 ToString()。
ToString()这个方法太方便了,以致于以为就它这一种方法, 一般都是转之前先判断是否为null.
C# ToString()和Convert.ToString()的区别的更多相关文章
- ToString()和Convert.ToString()的区别
ToString()和Convert.ToString()的区别 一般情况下,这两种方法都可以通用,但是当返回的数据类型中有可能出现null值时如果调用ToString方法了,就会返回NullRefe ...
- C# ToString()和Convert.ToString()的区别【转】
一.一般用法说明 ToString()是Object的扩展方法,所以都有ToString()方法;而Convert.ToString(param)(其中param参数的数据类型可以是各种基本数据类型, ...
- ToString()、Convert.ToString()、(string)、as string 的区别
通常 object 到 string 有四种方式(假设有object obj):obj.ToString().Convert.ToString().(string)obj.obj as string. ...
- [C#]C#中ToString()和Convert.ToString()的区别
一.一般用法说明 ToString()是Object的扩展方法,所以都有ToString()方法;而Convert.ToString(param)(其中param参数的数据类型可以是各种基本数据类型, ...
- 由 ToString()和Convert.ToString() 引发的问题
对于久经沙场的程序猿来说,类型转换再熟悉不过了,在代码中我们也会经常用到. 前几天,有个学生问我关于类型转换ToString()和Convert.ToString()的区别,这么常用的东西我竟然支支吾 ...
- ToString和Convert.ToString处理null值
http://www.cnblogs.com/qinge/p/5687806.html文章来源 1.Convert.ToString能处理字符串为null的情况. 测试代码如下: 1 2 3 4 5 ...
- . ToString(),Convert.ToString(),(string),as比较:
http://www.cnblogs.com/chehaoj/archive/2010/02/23/1671955.html 通常 object 到 string 有四种方式(假设有object ob ...
- Convert.ToString和ToString的区别
Convert.ToString能处理字符串为null的情况,不抛出异常. ToString方法不能处理字符串为null的情况,会抛出异常.如:“未将对象引用设置到对象的实例”.
- Part 59 to 60 Difference between Convert ToString and ToString,String and StringBuilder
Part 59 Difference between Convert ToString and ToString Part 60 Difference between String and Strin ...
随机推荐
- 〔写在OS边上〕定性note
转载:http://tieba.baidu.com/p/1273477757 0 neta 有的时候我们在读书或者看文档.——啊,原来这东西的框架就是这样而已,很直白么.有的时候我们在读代码.——于是 ...
- Thread详解
具体可参考:Java并发编程:Thread类的使用,这里对线程状态的转换及主要函数做一下补充. 一.线程状态转换图 注意: 阻塞状态是线程阻塞在synchronized代码块时的状态,而阻塞在Lock ...
- 【转】repo 的一些用法和理解-不错
原文网址:http://blog.csdn.net/yasin_lee/article/details/5975068 repo的用法(zz) 注:repo只是google用Python脚本写的调用g ...
- 四种简单的排序算法的php实现
无聊,用php写几个排序算法,算法介绍请移步这里,这里使用php实现了几个简单的,如下 //选择排序 function selection_sort($arr){ $len = count($arr) ...
- Uva272.TEX Quotes
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Objective-C中NSString和NSMutableString的基本用法
int main(int argc, const char * argv[]) { @autoreleasepool { //----------------NSString------------- ...
- VS 2012 显示Link的参数
VC 通过Link将cl编译出来的.obj文件链接到一起.不过默认设置还是看不到究竟是怎么做的.需要如下设置: 右键点击工程,选择Properties菜单,然后选择左边的Linker->Gene ...
- python高级编程之访问超类中的方法:super()
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #超类01 #它是一个内建类型,用于访问属于某个对象超类特性 pri ...
- springMVC+mybatis用户登录实例
1.整体结构 2.准备工作 数据库: --Mysql 5.6 创建数据库 wolf 1 CREATE DATABASE wolf; 创建用户表 user 1 2 3 4 5 6 create tabl ...
- JS~重写alter与confirm,让它们变成fancybox风格
插件与系统命令 对于很多JS弹框插件来说,都提供了alter,confirm等功能,如fancybox,Boxy等插件,今天来介绍一下如何将系统的alter和confirm替换成指定插件的alter和 ...