HOWTO · Csharp
如何在 C# 中把一個字串轉換為布林值
本文介紹瞭如何在 C# 中把字串轉換為布林值的方法,包括 ToBoolean()方法和 TryParse()方法。它包括 ToBoolean()方法和 TryParse()方法。
本頁內容
在 C# 中將文字轉換為布林值時,如果輸入確定有效,請使用 Convert.ToBoolean;如果輸入可能來自使用者或其他不受信任的來源,請使用 Boolean.TryParse。這兩種方法都能辨識 true 和 false,不區分大小寫,並允許字串前後有空白。它們不會將 yes 或 1 等值視為布林文字。如果應用程式需要在轉換失敗時不引發例外,請選擇 TryParse。
如何選擇 Convert.ToBoolean 或 Boolean.TryParse
這兩種方法的主要差異在於回報轉換失敗的方式。Convert.ToBoolean 遇到可辨識的文字時會傳回 bool;字串為 null 時會傳回 false;其他非 null 的文字則會引發 FormatException。Boolean.TryParse 則會傳回表示是否成功的旗標,並將解析後的值放入 out 參數。字串為 null 或文字無法辨識時,它會傳回 false,而解析失敗時輸出值也會是 false。若要驗證表單值、設定字串或其他可能格式錯誤的輸入,請使用 TryParse;只有在適合採用例外處理時,才使用 Convert.ToBoolean。
使用 Convert.ToBoolean 轉換字串
以下的 Convert.ToBoolean 多載接受一個字串引數,並傳回 bool。結果會存入 value,程式接著會將它寫入標準輸出。
執行以下範例:
本節中的程式碼以及顯示的標籤或輸出仍為英文。
using System;
class StringToBoolean
{
static void Main()
{
string input = "true";
bool value = Convert.ToBoolean(input);
Console.WriteLine(value);
}
}
輸入可以為 null 時,若字串為 null,轉換結果會是 false。若非 null 的字串不屬於可接受的布林文字,則會引發 FormatException;如果應用程式可能遇到這種情況,請使用下方的安全解析模式,或妥善處理例外。
使用 Boolean.TryParse 安全地解析輸入
Boolean.TryParse 方法接受字串和一個 out bool。傳回值表示解析是否成功;out 變數則會存放解析後的值。請先檢查傳回值,再將該值視為有效輸入。此範例會處理可辨識的值,也會在文字無法解析時顯示提示;遇到 null 或無法辨識的文字時,TryParse 不會引發例外。範例輸出的 Parsed: 和 Could not parse the input. 標籤維持英文。
本節中的程式碼以及顯示的標籤或輸出仍為英文。
using System;
class StringToBoolean
{
static void Main()
{
string input = "true";
bool value;
if (Boolean.TryParse(input, out value))
{
Console.WriteLine("Parsed: " + value);
}
else
{
Console.WriteLine("Could not parse the input.");
}
}
}
例如,將 input 改成 "yes" 或 null,即可走到失敗分支。這兩種情況下,TryParse 都會傳回 false,並將 value 設為 false。當轉換失敗是預期可能發生的情況,而且呼叫端需要決定如何驗證、要求使用者重新輸入或採用備用值時,這個方法就很實用。解析失敗與成功解析出 false 是兩種不同情況:請檢查傳回值來區分。如果忽略傳回值,只檢查 value,兩種情況看起來都會是 false。若設定有明確記載的預設值,可在 else 分支套用該值;若是互動式輸入,則應顯示驗證訊息,讓使用者修正原始文字。