最近老是看到Convert,Parse,但是忽然發現居然不知道它們的區別,所以決定好好研究下,下面是研究成果,有誤之處請指出。
上面的例子中,體現了它們之間的關系,請容我細細說來:
Convert可以將大部分的object轉成所需的類型。而Parse和TryParse貌似只能將string類型轉成int類型。
當string類型的實例為Null時,Convert返回值是0,Parse會出現異常,TryParse返回0。TryParse和Parse感覺它兩最大的區別就是TryParse加了異常保護。可以接收異常string。
當要轉換的是小數時,Convert會轉成偶數,即1.2換轉成2,2.6會轉成2。Parse會出現異常,顯示的強制轉換成較小的數,沒有四舍五入的概念。
int.TryParse返回的是bool,0表示轉換不成功:具體用法是
static void Main(string[] args) { string str1 = "5"; int n = int.Parse(str1); int result1; int.TryParse(str1, out result1); Console.WriteLine("result的值是:" + result1); //Console.ReadKey(); string str2 = "a"; //int m = Convert.ToInt32(str2); ////int p = int.Parse(str2); int result2; int.TryParse(str2,out result2); Console.WriteLine("result的值是:" + result2); }Convert、Parse、TryParse、(int) 三個函數都是將值轉換成整數,但是四者之間各有異同,開發人員可以根據情況選用最合適的。以下解釋均經過高人驗證,希望對大家有所幫助。
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類型。變量若為object或string類型,當其值為null時,會傳回0,不會造成程序錯誤,但是若此string類型的值為string.Empty,在轉型成int時,仍會造成程序錯誤。 該方式對于浮點數會做四舍五入。 該方式同強制轉換一樣,不能用來處理char類型,否則傳回的是ASCII代碼。新聞熱點
疑難解答