1. 程式人生 > >c#中(int)、int.Parse()、int.TryParse、Convert.ToInt32的區別

c#中(int)、int.Parse()、int.TryParse、Convert.ToInt32的區別

    以前經常為這幾種資料型別轉換方式而迷茫,這次為了徹底搞清它們之間的區別和優缺點,在網上查看了一些資料,並親自驗證了一下,在此寫出來,一方面,為那些跟我有過相似經歷的朋友們些許,另一方面,希望前輩們指導一下,看哪裡有不合適的地方。

1 (int)變數名[強制型別轉換]:

     該轉換方式主要用於數字型別轉換,從int型別到long,float,double,decimal型別,可以使用隱式轉換,但是從long型別到int型別就需要使用顯式轉換,也就是該資料型別轉換方式,否則會產生編譯錯誤。

      該方式對於浮點數會做無條件捨去,失去精確度

      當然,該方式也可以進行object到int得轉換,但是,object的值要賦予int型別的值,否則會產生編譯錯誤,而且object為null時也會出錯。

      最後切忌的一點,千萬不要用來處理char型別到int型別的轉換,否則傳回的的值是ASCII程式碼,而並不是你想要的值。

2 int.Parse(string型別變數名)

       該方式是將數字內容的字串轉為int型別,如果字串內容為空或者null時,則丟擲ArgumentNullException異常;如果字串內容不是數字,則丟擲FormatException異常;如果字串內容所表示數字超出int型別可表示的範圍,則丟擲OverflowException異常。

      使用該方法切忌的一點就是隻能處理字串內容,而且字串內容只能在int型別可表示的範圍之內。

3 int.TryParse(string s, out int result)

      該方式也是將數字內容的字串轉為int型別,但是該方式比int.Parse優越的地方,就是它不會出現異常。如果轉換成功返回 true,如果轉換失敗返回 false。很明顯,最後一個引數為輸出值,如果轉換失敗,輸出值為 0;如果轉換成功,則輸出相應的值。

4 Convert.ToInt32

      該方式不僅可以將字串轉為int型別,還可以將其它型別的值轉成int型別。變數若為objectstring型別,當其值為null時,會傳回0,不會造成程式錯誤,但是若此string型別的值為string.Empty,在轉型成int時,仍會造成程式錯誤。

    該方式對於浮點數會做四捨五入。

    該方式同強制轉換一樣,不能用來處理char型別,否則傳回的是ASCII程式碼。