主要區別
Parse()
在轉換失敗時會拋出異常, 正常情況下都會導致程式中斷
TryParse()
在轉換失敗時不會拋出 error, 而是返回 false
, 這樣可以避免程式中斷
轉換格式
Parse() & TryParse()
Parse()
通常用來將 '字串' 轉換成其他類型, 例如:int
, double
, DateTime
, decimal
等等
語法為 type var = type.Parse(var)
, type 表示要轉換的類型, 在轉換前需先宣告 string var
的值
int.Parse()
1
2
|
string numString = "123";
int num = int.Parse(numString);
|
double.Parse()
1
2
|
string numString = "3.14";
double num = double.Parse(numString);
|
但是當 int.Parse()
無法順利轉換的時候, 就會出現錯誤, 表示該字串無法被解析為 int, 這時候就可以使用 TryParse()
Unhandled Exception: System.FormatException: Input string was not in a correct format.
int.TryParse()
TryParse()
表示當原 var 中的 value 無法順利被轉換時會返回 false
, 而不會出現錯誤造成程式中斷
TryParse()
在處理不確定輸入時是一個較為安全的方法, 可以避免無效或錯誤的輸入導致程序中斷, 並可以提供錯誤處理的機制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// 如果 num1_st 設為 string "123", 因為 123 可以順利被轉換, 因此最後會顯示123
// 如果 num1_st 設為 string "aaa", 則會出現 error syntax!
// int.TryParse(num1_st, out int num1)
// num1_st:要被轉換的值
// out:output
// int num1:存儲轉換後的整數值
string num1_st = "123";
if (int.TryParse(num1_st, out int num1))
{
Console.WriteLine(num1);
}
else
{
Console.WriteLine("error syntax!");
}
|
double.TryParse()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// 如果 num1_st 設為 string "3.14", 因為 3.14 可以順利被轉換, 因此最後會顯示123
// 如果 num1_st 設為 string "aaa", 則會出現 error syntax!
string num1_st = "3.14";
if (double.TryParse(num1_st, out double num1))
{
Console.WriteLine(num1); // Output: 3.14
}
else
{
Console.WriteLine("error syntax!");
}
string num2_st = "aaa";
if (double.TryParse(num2_st, out double num2))
{
Console.WriteLine(num2);
}
else
{
Console.WriteLine("error syntax!"); // Output: error syntax!
}
|
Conclusion
Parse()
用於將 string
轉換為 int
, 但當轉換失敗時會拋出異常
TryParse()
用於安全地將 string
轉換為 int
, 當轉換 failed 時不會拋出 error, 而是返回 false, 並可以進行錯誤處理