一、一般用法说明

  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 对象,它们间的区别如前文所述主要表现在:

  1. ToString() :如果 obj 为 null,调用 obj.ToString() 方法会导致 NullReferenceException 异常。
  2. Convert.ToString():如果 obj 为 null,调用 Convert.ToString()会返回null
  3. (string):用强制转换 (string)obj 要求 obj 的运行时类型必须是 string。如果不是,就会抛出异常。
  4. as :用 as 方法则会相对平稳,当 obj 的运行时类型不是 string 时会返回 null 而不抛出异常。

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

  ToString()这个方法太方便了,以致于以为就它这一种方法, 一般都是转之前先判断是否为null.

C# ToString()和Convert.ToString()的区别的更多相关文章

  1. ToString()和Convert.ToString()的区别

    ToString()和Convert.ToString()的区别 一般情况下,这两种方法都可以通用,但是当返回的数据类型中有可能出现null值时如果调用ToString方法了,就会返回NullRefe ...

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

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

  3. ToString()、Convert.ToString()、(string)、as string 的区别

    通常 object 到 string 有四种方式(假设有object obj):obj.ToString().Convert.ToString().(string)obj.obj as string. ...

  4. [C#]C#中ToString()和Convert.ToString()的区别

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

  5. 由 ToString()和Convert.ToString() 引发的问题

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

  6. ToString和Convert.ToString处理null值

    http://www.cnblogs.com/qinge/p/5687806.html文章来源 1.Convert.ToString能处理字符串为null的情况. 测试代码如下: 1 2 3 4 5 ...

  7. . ToString(),Convert.ToString(),(string),as比较:

    http://www.cnblogs.com/chehaoj/archive/2010/02/23/1671955.html 通常 object 到 string 有四种方式(假设有object ob ...

  8. Convert.ToString和ToString的区别

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

  9. 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 ...

随机推荐

  1. Keil C51必须注意的一些有趣特性

    Keil c51号称作为51系列单片机最好的开发环境,大家一定都很熟悉.它的一些普通的特性大家也都了解,(书上也都说有)如:因为51内的RAM很小,C51的函数并不通过堆栈传递参数(重入函数除外),局 ...

  2. ajax 调用后台接口示例

    $(function(){ var _del_time_list = $("select[name='del_time_list']"); var _del_table_name ...

  3. 15款免费WiFi入侵破解安全测试工具

    以下是的15款免费(接近免费)的WiFi网络入侵测试工具.这些工具将帮你发现流氓AP,弱Wi-Fi密码等安全隐患,在黑客光临之前把漏洞补上. 一.Vistumbler扫描器 Kismet是一个开源的W ...

  4. 【转】Kconfig,Makefile 和 .config

    原文网址:http://blog.csdn.net/nxh_love/article/details/11846861 最新在做Sensor驱动移植的时候,发现了Android driver 中有Kc ...

  5. UVA 10285 Longest Run on a Snowboard(记忆化搜索)

    Problem C Longest Run on a Snowboard Input: standard input Output: standard output Time Limit: 5 sec ...

  6. Qt creator自定义编译运行步骤

    一直用Qt creator开发.无它,只是因为linux下C++ IDE选择不多.同时因为我抛弃了MFC,平时写个小工具还得靠Qt,正好一举两用. 用Qt creator开发一般的工程,是不用修改编译 ...

  7. [Hapi.js] Replying to Requests

    hapi's reply interface is one of it's most powerful features. It's smart enough to detect and serial ...

  8. 飘逸的python - hack输出流便于调试

    当项目有很多文件时,要找出控制台的输出是在哪里print出来的很麻烦,不过这事对于强大的python来说小菜一碟. 先上代码和效果,再说明. import sys,traceback class my ...

  9. HTTP协议2之基本认证--转

    http协议是无状态的, 浏览器和web服务器之间可以通过cookie来身份识别. 桌面应用程序(比如新浪桌面客户端)跟Web服务器之间是如何身份识别呢? 什么是HTTP基本认证 桌面应用程序也通过H ...

  10. Js 实现 C# Format方法

    参考网友的, 挺好用的: String.prototype.format = function (args) { if (arguments.length > 0) { var result = ...