1. 程式人生 > >【C#】(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的區別

【C#】(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的區別

1)對於轉換物件,Convert.ToInt32()可以為多種型別(例出數字型別外bool、DateTime等),int.TryParse()和int.Parse()只能是整型字串類型別(即各種整型ToString()之後的形式,不能為浮點型,否則int.Parse()就會出現輸入的字串格式不正確的錯誤,int.TryParse()也會返回False,輸出引數為0),(int)只能是數字型別(float,int,unit等);
2)對於空值NUll,從執行報錯的角度講,(int)強制轉換和int.Parse()都不能接受Null;Convert.ToInt32()其實是在轉換前先做了判斷,如果引數是Null,則直接返回0,否則就呼叫int.Parse()進行轉換,int.TryParse()其實是對Int.Parse()做了一個異常處理,如果出現異常則返回False,並且將輸出引數返回0;
3)針對浮點型的取捨問題

,浮點型只有Convert.Toint32()和(int)能進行轉換,但是也是進行了取捨了的,Convert.ToInt32()採取的取捨是進行四捨五入,而(int)則是擷取浮點型的整數部分,忽略小數部分,例如Convert.ToInt32(1.499d)和(int)1.499d都返回1,convert.Toint32(1,5d)返回2,而(int)1.5d還是返回1;
4)關於溢位,將大的資料型別轉換為小的資料型別時Convert.ToInt32()和Int.Parse()都會報出溢位錯誤,值對於Int32太大或太小,而(Int)不報錯,但是返回值為-1,
如此可見,我們在進行資料轉換前選擇轉化你方法要謹慎,如果是數字型別可以考慮直接用(Int)強制轉換,如果是整型字串型別的,考慮用int.Parse()進行轉換,如果不是這兩種型別,考慮用Conver.ToInt32()進行轉換。