不過有時候轉換失敗時
就會產生錯誤
雖然可以用try.....catch去處理例外
不過int.TryParse()更方便
只要轉換失敗
就會傳回false和數字0
這可避免不必要的例外
以下是三種方法的狀況比較
//int.Parse各式輸入值的狀況
int.Parse("20"); //20
int.Parse("1000000000000"); //OverflowException
int.Parse("a"); //FormatException
int.Parse(String.Empty); //FormatException
int.Parse(null); //ArgumentNullException
//int.TryParse各式輸入值的狀況
int resultInt = 0;
int.TryParse("20", out resultInt); //True
int.TryParse("1000000000000", out resultInt); //False
int.TryParse("a", out resultInt); //False
int.TryParse(String.Empty, out resultInt); //False
int.TryParse(null, out resultInt); //False
//Convert.ToInt32各式輸入值的狀況
Convert.ToInt32("20"); //True
Convert.ToInt32("1000000000000"); //OverflowException
Convert.ToInt32("a"); //FormatException
Convert.ToInt32(String.Empty); //FormatException
Convert.ToInt32(null); //0
我的用法:
if (int.TryParse(l_sTimeoutText, out l_iTimeout) == false) //判斷tbxTimeout2.Text,字串是否為數字,不是就傳出false,並使用預設值
{ //string轉int
l_iTimeout = 1000; }
Quote reference: 小葛部落格