前言
在開發中,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 物件,它們間的區別如前文所述主要表現在:
- 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()。
歡迎關注訂閱微信公眾號【熊澤有話說】,更多好玩易學知識等你來取
作者:熊澤-學習中的苦與樂 公眾號:熊澤有話說 出處:https://www.cnblogs.com/xiongze520/p/15420047.html 您可以隨意轉載、摘錄,但請在文章內註明作者和原文連結。
|