1. 程式人生 > >C#中強制轉換、Convert和Parse、TryParse介紹

C#中強制轉換、Convert和Parse、TryParse介紹

1.(int)變數名【強制型別轉換】
該轉換方式主要用於數字型別轉換,從int型別到long,float,double,decimal型別,可以使用隱式轉換,但是從long型別到int型別就需要使用顯式轉換,也就是該資料型別轉換方式,否則會產生編譯錯誤。
該方式對於浮點數會做無條件捨去,失去精確度
當然,該方式也可以進行object到int得轉換,但是,object的值要賦予int型別的值,否則會產生編譯錯誤,而且object為null時也會出錯。
object到int的轉換涉及到拆箱,會降低效率,一般涉及到裝箱和拆箱的裝換都儘量避免,除非迫不得已。
最後切忌的一點,千萬不要用來處理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;如果轉換成功,則輸出相應的值。

注意,TryParse是在.Net4.0之後出現的,轉化效率比Parse要高並且不會丟擲異常,是現在比較流行的用法,一般不建議使用Parse而是使用TryParse。

4 Convert.ToInt32
該方式不僅可以將字串轉為int型別,還可以將其它型別的值轉成int型別。變數若為object或string型別,當其值為null時,會傳回0,不會造成程式錯誤,但是若此string型別的值為string.Empty,在轉型成int時,仍會造成程式錯誤。
該方式對於浮點數會做四捨五入。
該方式同強制轉換一樣,不能用來處理char型別,否則傳回的是ASCII程式碼。

注意:
a. Convert.ToInt32(double value)
如果 value 為兩個整數中間的數字,則返回二者中的偶數;即 3.5轉換為4,4.5 轉換為 4,而 5.5 轉換為 6。 不過4.6可以轉換為5,4.4轉換為4
b. int.Parse(“4.5”)
直接報錯:“輸入字串的格式不正確”.

Int轉化其他數值型別為Int時沒有四捨五入,強制轉換
int.Parse是轉換String為int
Convert.ToInt32是轉換繼承自Object的物件為int的.

你得到一個object物件,你想把它轉換為int,用int.Parse就不可以,要用Convert.ToInt32.
個人總結:
(1)Convert.ToInt32的引數比較多,Int.Parse只能轉換string型別的.
(2)Parse就是把String轉換成int,char,double…等,也就是*.Parse(string) 括號中的一定要是string.
(3)Convert可以提供多種型別的轉換,也就是Convert.*()括號中可以為很多種型別(包括string)