前言
在開發中,ToString()這個方法太友善了,以緻于誤解大家轉換時都是直接Object.ToString()直接轉換,
其實不然, 一般都是轉之前先判斷是否為null後再進行轉換,否則會直接報錯。
ToString()
每個類的基類都是Object類,ToString()是可以編寫 overload 和 override 的方法之一。
是以,當你調用object.ToString()時,它的意思是它将調用該對象ToString,
如果object為null,則會抛出異常Object is not set to an instance of an object.
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuADMxQzM3UDM00SM0AzMxgjMxEDOxATMxIDMy0iMzgzM5ATMvwFMxEjMwIzLcJzM4MTOwEzLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
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 您可以随意轉載、摘錄,但請在文章内注明作者和原文連結。 |