- static void Main(string[] args)
- {
- try
- {
- string str = "";
- // 如果str為空字串,則會跳到異常處理:輸入字串格式不正確
- Console.WriteLine(Convert.ToDouble(str));
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
以上程式碼出現的結果為:輸入字串格式不正確。因為傳入的字串為空,轉換成 double 類型不成功。
- static void Main(string[] args)
- {
- try
- {
- string str = "123.123";
- // 如果str為空字串,則會跳到異常處理:輸入字串格式不正確
- Console.WriteLine(Convert.ToDouble(str));
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
隨便對 str 給予一個合適的值,程式不會出現錯誤,也可得到結果為:123.123
下面改用另外一種 double.TryParse() 方式處理:
第一種情況仍是將 str 設為空字串,
- static void Main(string[] args)
- {
- try
- {
- string str = "";
- double rst = 0.0;
- Console.WriteLine("转换结果为:" + double.TryParse(str, out rst));
- Console.WriteLine(rst);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
程式碼執行不會出現錯誤,得到的結果為:
傳回結果:false
rst :0
第二種情況隨便對 str 給予一個合適的值:
- static void Main(string[] args)
- {
- try
- {
- string str = "123.123";
- double rst = 0.0;
- Console.WriteLine("转换结果为:" + double.TryParse(str, out rst));
- Console.WriteLine(rst);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
程式碼執行不會出現錯誤,得到的結果為:
傳回結果:true
rst :123.123
由以上的測試結果可以看出。使用 double.TryParse() 做類型轉換更安全,
可以對傳回值進行判斷,也可以設置預設的傳回值 0 。
注意事項:
傳入的字串即便已是包含數字字元,但當您使用 TryParse 方法轉換某些數值的型別而言,仍然有可能是無效的。
例如,"256" 不是 byte 的有效值,但卻是 int 的有效值。
" "98.6" 不是 int 的有效值,但卻是 decimal 的有效值。
下列範例顯示如何使用 TryParse 與 long、byte 及 decimal 值的字串表示。
string numString = "1287543"; //"1287543.0" will return false for a long long number1 = 0; bool canConvert = long.TryParse(numString, out number1); if (canConvert == true) Console.WriteLine("number1 now = {0}", number1); else Console.WriteLine("numString is not a valid long"); byte number2 = 0; numString = "255"; // A value of 256 will return false canConvert = byte.TryParse(numString, out number2); if (canConvert == true) Console.WriteLine("number2 now = {0}", number2); else Console.WriteLine("numString is not a valid byte"); decimal number3 = 0; numString = "27.3"; //"27" is also a valid decimal canConvert = decimal.TryParse(numString, out number3); if (canConvert == true) Console.WriteLine("number3 now = {0}", number3); else Console.WriteLine("number3 is not a valid decimal");
節錄來源:http://msdn.microsoft.com/zh-tw/library/bb384043.aspx
Double.TryParse 方法 (String, NumberStyles, IFormatProvider, Double%) 文化特性格式說明。
節錄來源:http://msdn.microsoft.com/zh-tw/library/3s27fasw.aspx
---
Welly Lin