淺談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方法了,就會(huì)返回NullReferenceException,除非你要捕捉此異常再做處理,否則在這種情況下就應(yīng)考慮使用Convert.ToString()方法了,因?yàn)镃onvert.ToString(null)不會(huì)拋出異常而是返回空字符串。
主要的區(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() 方法會(huì)導(dǎo)致 NullReferenceException 異常。
Convert.ToString():如果 obj 為 null,調(diào)用 Convert.ToString()會(huì)返回null
(string):用強(qiáng)制轉(zhuǎn)換 (string)obj 要求 obj 的運(yùn)行時(shí)類型必須是 string。如果不是,就會(huì)拋出異常。
as :用 as 方法則會(huì)相對平穩(wěn),當(dāng) obj 的運(yùn)行時(shí)類型不是 string 時(shí)會(huì)返回 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#基礎(chǔ)系列之System.String的深入理解
- C#中字符串優(yōu)化String.Intern、IsInterned詳解
- C#實(shí)現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能示例
- C#中enum和string的相互轉(zhuǎn)換
- 非常實(shí)用的C#字符串操作處理類StringHelper.cs
- C# 中string.split用法詳解
- C#中String StringBuilder StringBuffer類的用法
- C#中static void Main(string[] args) 參數(shù)示例詳解
- C# string格式的日期時(shí)間字符串轉(zhuǎn)為DateTime類型的方法
- C#中圖片.BYTE[]和base64string的轉(zhuǎn)換方法
- C#中ToString數(shù)據(jù)類型格式大全(千分符)
- 詳談C# 圖片與byte[]之間以及byte[]與string之間的轉(zhuǎn)換
- 詳解C#中的string與String
- C#中Byte[]和String之間轉(zhuǎn)換的方法
- C# 為String類型增加方法詳解
- C#判斷一個(gè)String是否為數(shù)字類型
- C#中String和StringBuilder的簡介與區(qū)別
相關(guān)文章
c#使用簡單工廠模式實(shí)現(xiàn)生成html文件的封裝類分享
這篇文章主要介紹了運(yùn)用了簡單工廠模式實(shí)現(xiàn)頁面靜態(tài)化封裝類,思路比較簡單,大家可根據(jù)自己的思路再擴(kuò)展此類2014-01-01
C#結(jié)合JS解決Word添加無效位圖導(dǎo)致進(jìn)程停滯的問題
這篇文章主要為大家詳細(xì)介紹了C#如何結(jié)合JS解決Word添加無效位圖導(dǎo)致進(jìn)程停滯的問題,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
c#模擬平拋運(yùn)動(dòng)動(dòng)畫的方法詳解
本篇文章是對使用c#模擬平拋運(yùn)動(dòng)動(dòng)畫的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
C#最簡單的關(guān)閉子窗體更新父窗體的實(shí)現(xiàn)方法
原理就是將子窗體最為對話框模式彈出,當(dāng)窗體關(guān)閉或取消時(shí)更新主窗體2012-11-11
C#在Unity游戲開發(fā)中進(jìn)行多線程編程的方法
這篇文章主要介紹了C#在Unity游戲開發(fā)中進(jìn)行多線程編程的方法,文中總結(jié)了Unity中使用多線程的幾種方式以及一款多線程插件的介紹,需要的朋友可以參考下2016-04-04

