主要區別

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, 並可以進行錯誤處理