ToString()字串轉換你用正確了嗎?

學習中的苦與樂發表於2021-10-18

前言

在開發中,ToString()這個方法太方便了,以致於誤解大家轉換時都是直接Object.ToString()直接轉換,

其實不然, 一般都是轉之前先判斷是否為null後再進行轉換,否則會直接報錯。

 


 

ToString()

每個類的基類都是Object類,ToString()是可以編寫 overload  override 的方法之一。

因此,當你呼叫object.ToString()時,它的意思是它將呼叫該物件ToString,

如果object為null,則會丟擲異常Object is not set to an instance of an object.


 

ConVert.ToString()

與在Convert.ToString方法中一樣,Convert是一個靜態類,我們在其中傳遞物件,

並在該方法中返回其檢查物件是否為null或否(如果不是,則呼叫該物件的ToString方法,否則返回null)。

這樣是不會報錯的,但是null還是返回null," "還是返回" ",沒啥意義,並且不注意的話,後續使用轉換後的物件還會報錯,如下:

 


 

建議使用方式

我們可以在使用之前進行null的規避,規避的方法很多,【if條件判斷、三目運算子(三元運算子)等方法】

根據實際情況使用即可,這樣就不會對後續操作有影響;

 


 

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()。

 

 
歡迎關注訂閱微信公眾號【熊澤有話說】,更多好玩易學知識等你來取
作者:熊澤-學習中的苦與樂
公眾號:熊澤有話說
出處:https://www.cnblogs.com/xiongze520/p/15420047.html
您可以隨意轉載、摘錄,但請在文章內註明作者和原文連結。  

 

 

 

相關文章