[C#]C#中ToString()和Convert.ToString()的区分
分类:计算机编程

意气风发、经常用法表明

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

  平日情况下,那二种办法都得以通用,可是当再次来到的数据类型中有望现身null值时假设调用ToString方法了,就能回来NullReferenceException,除非你要捕捉此拾贰分再做拍卖,不然在此种境况下就应思考使用Convert.ToString()方法了,因为Convert.ToString(null)不会抛出特别而是回到空字符串。

  图片 1

  首要的差距就疑似上所示,由于ToString()是扩充方法,扩大自Object,所以转null报那几个。而Convert.ToString()再次来到空字符串。

  然则Convert.ToString(),作用不算太大,因为:

图片 2

        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();
        }

图片 3

  null转了以往照旧null,""转了今后依然""。

 

  ToString()是Object的强盛方法,所以都有ToString()方法;而Convert.ToString(param)(此中param参数的数据类型可以是各个基本数据类型,也得以是bool或object类对象。

object到string的转换

  从 object 到 string 大致有两种艺术,包涵显式调换和as关键词的施用:obj.ToString()、Convert.ToString()、(string)obj、obj as 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.

经常 object 到 string 有四种方法(若是有object obj):obj.ToString()、Convert.ToString()、(string)obj、obj as string。他们都能将 object 对象转变来 string 对象。作者就讲讲他们的纠纷以至在实质上中应该使用哪个。

二、ToString()和Convert.ToString()的区别

 

  平常景况下,这二种艺术都可以通用,可是当重临的数据类型中有超大大概现身null值时只要调用ToString方法了,就能够回来NullReferenceException,除非你要捕捉此十分再做管理,不然在此种气象下就应思考接纳Convert.ToString()方法了,因为Convert.ToString(null)不会抛出拾壹分而是回到空字符串。
一言九鼎的界别就如上所示,由于ToString()是扩展方法,扩展自Object,所以转null报那些。而Convert.ToString()再次回到空字符串。

        前多少个法子日常是由别的对象取得 string 对象,它们间的界别只表今后要转移的靶子为 null 时,如若 obj 为 null,调用 obj.ToString 方法会产生 NullReferenceException 格外,调用 Convert.ToString 不会抛出卓殊而回到三个 null。

  可是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();
    }

      用强制调换 (string)obj 必要 obj 的周转时类型必需是 string。若是或不是,就能够抛出分外。

null转领会后依旧null,""转了今后还是""。

用 as 方准则会相对牢固,当 obj 的周转时类型不是 string 时会重临 null 而不抛出万分。

  所以,合营上string.IsNullOrEmpty(Convert.ToString())仍然相比有利的。

故而在日常在大家须求得到某些对象的 string 表明情势时,大家理应使用 ToString 和 Convert.ToString,这个时候你就得根据情形选二个,借令你能确定保障你的靶子不为 null,则多个大概。如若有比相当的大大概为 null,你就应当用 Convert.ToString,假如您愿意它为 null 的时候抛出特别,那么自然能够挑选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()。

本文由pc28.am发布于计算机编程,转载请注明出处:[C#]C#中ToString()和Convert.ToString()的区分

上一篇:交换二叉树左右子树 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 二叉树中度为2的结点
    二叉树中度为2的结点
    int Degree2(BitNode *t){ if(t==null) return 0;if(t-lchild!=nullt-rchild!=null) return 1 Degree2(t-lchild) Degree2(t-rchild);return Degree2(t-lchild) Degree2(t-rchild); } 您可能感兴趣的 非递归先
  • 包的区别
    包的区别
    大家平常在python的模块目录中会看见" __init__.py " 那个文件,那么它终归有啥样功效吗? 类 类的概念在不胜枚举语言中出现,相当轻便驾驭。它将数据和操
  • 开发的进化史,中的发展
    开发的进化史,中的发展
    三、查询集合 本文内容 引入 概述 匿名函数     Lambda 表达式     匿名方法 参看资料 引入 本文在 VS 2008 环境下,阐述自己对 Lambda 表达式、匿名函数、
  • 0A_Windows下相同的时候设置Python2和Python3
    0A_Windows下相同的时候设置Python2和Python3
    Gerapy是贰个Scrapy布满式管理模块,本节就来介绍一下它的设置方式。 Last login: Tue May 16 21:05:34 on console➜ ~ brew updatezsh: command not found: brew➜ ~ ruby -e "$(curl -
  • python__系列化模块,各个模块的洗练计算
    python__系列化模块,各个模块的洗练计算
    数量长久化的方法有:   什么样叫种类化——将原先的字典、列表等内容转换到一个字符串的经过就称为 序列化 。 1.平凡文书无格式写入:将数据直接写