# TryParse 是什麼? 在 C# 中,TryParse 方法是一種靜態方法,用於將字串轉換為特定型別的數據。它提供了一種安全的轉換方式,在轉換失敗時不會拋出例外,而是返回一個布林值,告訴你轉換是否成功。 ### TryParse 的基本概念 * 定義:TryParse 方法有多種不同的版本,用於不同的資料型別,例如 int.TryParse、double.TryParse、DateTime.TryParse 等等。每個版本都接受一個字串作為輸入,並返回該型別的輸出。 * 用途:TryParse 主要用於從字串安全地轉換為其他資料型別,例如從用戶輸入的字串轉換為整數或浮點數。這樣可以避免使用 Parse 方法時因格式錯誤而拋出的例外。 --- ### 如何使用 TryParse 1. 基本用法 使用 TryParse 方法可以簡單地將字串轉換為其他資料型別,並檢查轉換是否成功: ``` string input = "123"; int result; bool success = int.TryParse(input, out result); if (success) { Console.WriteLine("轉換成功,結果是: " + result); } else { Console.WriteLine("轉換失敗,輸入不是有效的整數。"); } ``` 在這段代碼中,int.TryParse(input, out result) 試圖將字串 "123" 轉換為整數。如果轉換成功,success 會是 true,並且 result 會被賦值為 123。如果轉換失敗,success 會是 false,result 則不會被賦予有效的數值。 2. 處理不同型別的字串 TryParse 方法不僅限於整數,也可以用於其他型別,例如浮點數和日期: ``` string doubleInput = "3.14"; double doubleResult; if (double.TryParse(doubleInput, out doubleResult)) { Console.WriteLine("轉換成功,結果是: " + doubleResult); } else { Console.WriteLine("轉換失敗,輸入不是有效的浮點數。"); } string dateInput = "2024-08-24"; DateTime dateResult; if (DateTime.TryParse(dateInput, out dateResult)) { Console.WriteLine("轉換成功,結果是: " + dateResult.ToShortDateString()); } else { Console.WriteLine("轉換失敗,輸入不是有效的日期。"); } ``` 在這裡,double.TryParse 和 DateTime.TryParse 分別用來轉換字串為浮點數和日期。這些方法都遵循相同的模式:如果轉換成功,則返回 true 並給相應的輸出變量賦值;否則返回 false。 3. 使用列舉的 TryParse TryParse 方法也可以用於列舉 (enum)。這在處理預定義的一組選項或狀態時非常有用: ``` public enum OrderStatus { Pending, Preparing, Completed, Cancelled } string statusInput = "Preparing"; OrderStatus orderStatus; if (Enum.TryParse(statusInput, out orderStatus)) { Console.WriteLine("轉換成功,訂單狀態是: " + orderStatus); } else { Console.WriteLine("轉換失敗,無效的訂單狀態。"); } ``` 在這個例子中,Enum.TryParse 方法用來將字串 "Preparing" 轉換為 OrderStatus.Preparing。如果轉換成功,orderStatus 變量會被設置為對應的列舉值。 --- ### TryParse 的優點 * 安全性:不會因轉換失敗而拋出例外,避免了程序崩潰的風險。 * 性能:TryParse 是高效的,不會像 Parse 那樣在失敗時引發例外,因此可以用於高頻的轉換操作。 * 簡潔性:使用 TryParse 可以簡化代碼,不需要額外的例外處理邏輯。 --- ### 實際例子 ``` Console.Write("請輸入你的年齡: "); string ageInput = Console.ReadLine(); int age; if (int.TryParse(ageInput, out age) && age > 0) { Console.WriteLine("你的年齡是: " + age); } else { Console.WriteLine("無效的輸入,請輸入一個正整數。"); } ``` 在這個例子中,用戶輸入的字串被 TryParse 方法用來嘗試轉換為整數。如果轉換成功且數字大於 0,則輸出年齡;否則提示無效輸入。這樣的代碼確保了只有有效的整數輸入才會被接受。