2012年10月30日 星期二

[C#] 轉換成數字的方法:int.Parse()、int.TryParse()、Convert.ToInt32()

將字串等型態的值轉換成數字是常用到的轉換
不過有時候轉換失敗時
就會產生錯誤
雖然可以用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: 小葛部落格