淺談C#中ToString()和Convert.ToString()的區(qū)別
淺談ToString()和Convert.ToString()方法的區(qū)別
一、一般用法說明
ToString()是Object的擴(kuò)展方法,所以都有ToString()方法;而Convert.ToString(param)(其中param參數(shù)的數(shù)據(jù)類型可以是各種基本數(shù)據(jù)類型,也可以是bool或object類對象。
二、ToString()和Convert.ToString()的區(qū)別
  一般情況下,這兩種方法都可以通用,但是當(dāng)返回的數(shù)據(jù)類型中有可能出現(xiàn)null值時(shí)如果調(diào)用ToString方法了,就會返回NullReferenceException,除非你要捕捉此異常再做處理,否則在這種情況下就應(yīng)考慮使用Convert.ToString()方法了,因?yàn)镃onvert.ToString(null)不會拋出異常而是返回空字符串。
主要的區(qū)別就如上所示,由于ToString()是擴(kuò)展方法,擴(kuò)展自O(shè)bject,所以轉(zhuǎn)null報(bào)異常。而Convert.ToString()返回空字符串。
不過Convert.ToString(),作用不算太大,因?yàn)椋?/p>
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轉(zhuǎn)了之后還是null,""轉(zhuǎn)了之后還是""。
所以,配合上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的轉(zhuǎn)換
從 object 到 string 大致有四種方式,包括顯式轉(zhuǎn)換和as關(guān)鍵詞的使用:obj.ToString()、Convert.ToString()、(string)obj、obj as string。他們都能將 object 對象轉(zhuǎn)換成 string 對象。
前兩個(gè)方法通常是由別的對象得到 string 對象,它們間的區(qū)別如前文所述主要表現(xiàn)在:
ToString() :如果 obj 為 null,調(diào)用 obj.ToString() 方法會導(dǎo)致 NullReferenceException 異常。
Convert.ToString():如果 obj 為 null,調(diào)用 Convert.ToString()會返回null
(string):用強(qiáng)制轉(zhuǎn)換 (string)obj 要求 obj 的運(yùn)行時(shí)類型必須是 string。如果不是,就會拋出異常。
as :用 as 方法則會相對平穩(wěn),當(dāng) obj 的運(yùn)行時(shí)類型不是 string 時(shí)會返回 null 而不拋出異常。
所以在通常在我們需要得到某個(gè)對象的 string 表達(dá)形式時(shí),我們應(yīng)該使用 ToString() 和 Convert.ToString(),這時(shí)候你就得根據(jù)情形選一個(gè),假如你能保證你的對象不為 null,則兩個(gè)差不多。如果有可能為 null,你就應(yīng)該用 Convert.ToString(),如果你希望它為 null 的時(shí)候拋出異常,那么當(dāng)然可以選擇 ToString()。
ToString()這個(gè)方法太方便了,以致于以為就它這一種方法, 一般都是轉(zhuǎn)之前先判斷是否為null.
以上所述是本文的全部內(nèi)容,希望對大家有所幫助!
欄 目:C#教程
下一篇:c#中SqlTransaction——事務(wù)詳解
本文標(biāo)題:淺談C#中ToString()和Convert.ToString()的區(qū)別
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/6159.html
您可能感興趣的文章
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并打開的方法
 - 01-10C#實(shí)現(xiàn)Winform中打開網(wǎng)頁頁面的方法
 - 01-10C#實(shí)現(xiàn)由四周向中心縮小的窗體退出特效
 - 01-10Extjs4如何處理后臺json數(shù)據(jù)中日期和時(shí)間
 - 01-10C#中DataGridView常用操作實(shí)例小結(jié)
 - 01-10C#編程獲取資源文件中圖片的方法
 - 01-10asp.net中XML如何做增刪改查操作
 - 01-10C#利用反射技術(shù)實(shí)現(xiàn)去掉按鈕選中時(shí)的邊框效果
 - 01-10C#中查找Dictionary中的重復(fù)值的方法
 - 01-10C#中TreeView實(shí)現(xiàn)適合兩級節(jié)點(diǎn)的選中節(jié)點(diǎn)方法
 


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
 - 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
 - 01-10WinForm限制窗體不能移到屏幕外的方法
 - 01-10WinForm繪制圓角的方法
 - 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
 - 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動新
 - 01-10C#停止線程的方法
 - 01-10C#實(shí)現(xiàn)清空回收站的方法
 - 01-10C#通過重寫Panel改變邊框顏色與寬度的
 - 01-10C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
 
隨機(jī)閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
 - 01-10C#中split用法實(shí)例總結(jié)
 - 01-11ajax實(shí)現(xiàn)頁面的局部加載
 - 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 - 04-02jquery與jsp,用jquery
 - 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
 - 01-10delphi制作wav文件的方法
 - 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
 


