C#でboolとstringを相互変換する方法|ToString・Parse・TryParseの使い分け
はじめに
C#で開発していると、boolとstringを相互に変換したい場面はよくあります。
たとえば、trueやfalseの値を画面やログに表示したい場合は、boolをstringに変換します。一方で、フォーム入力、設定ファイル、APIレスポンスなどから取得した文字列の"true"や"false"をプログラム内で判定したい場合は、stringをboolに変換します。
C#では、主に次の方法を使ってboolとstringを変換します。
C#bool value = true;
// bool → string
string text = value.ToString();
// string → bool
bool result1 = bool.Parse("true");
bool result2;
bool success = bool.TryParse("true", out result2);
bool result3 = Convert.ToBoolean("true");
この記事では、C#でboolとstringを変換する方法について、ToString()、Parse()、TryParse()、Convert.ToBoolean()の違いと使い分けをわかりやすく解説します。
1. [c# bool string]で検索するユーザーの疑問とこの記事で解決できること
C#でboolとstringを扱うとき、多くの人が迷いやすいのは「変換方法そのもの」だけではありません。
trueと"true"は何が違うのか、bool.Parse()とbool.TryParse()はどちらを使えばよいのか、"1"や"0"は変換できるのか、nullや空文字を渡すとどうなるのか、といった点も重要です。
この記事では、C#のboolとstringの基本から、実務で安全に使える変換方法まで順番に解説します。
1-1. boolとstringの変換でよくある利用シーン
boolとstringの変換は、次のような場面でよく使われます。
C#bool isActive = true;
// 画面表示用に文字列へ変換
string displayText = isActive.ToString();
// 設定ファイルから読み込んだ文字列をboolへ変換
string configValue = "true";
bool enabled = bool.Parse(configValue);
代表的な利用シーンは次のとおりです。
C#// ログ出力
Console.WriteLine($"有効状態: {isActive}");
// フォーム入力値の判定
string input = "false";
bool isChecked = bool.Parse(input);
// APIレスポンスの値を変換
string responseValue = "true";
bool isSuccess = bool.Parse(responseValue);
このように、外部との入出力ではstringとして扱い、プログラム内部の条件分岐ではboolとして扱うケースが多くあります。
1-2. true/falseを文字列として表示したいケース
bool値を画面やログに表示したい場合は、ToString()を使います。
C#bool isLogin = true;
string text = isLogin.ToString();
Console.WriteLine(text);
実行結果は次のようになります。
True
C#のbool.ToString()では、trueは"True"、falseは"False"に変換されます。小文字の"true"や"false"ではなく、先頭が大文字になる点に注意しましょう。
小文字で出力したい場合は、次のようにToLower()を組み合わせます。
C#bool isLogin = true;
string text = isLogin.ToString().ToLower();
Console.WriteLine(text);
実行結果は次のとおりです。
true
1-3. 文字列の"true"/"false"をboolとして判定したいケース
フォーム入力や設定ファイルでは、値が文字列として取得されることがあります。
C#string input = "true";
このままではstring型なので、次のような条件分岐にはそのまま使えません。
C#string input = "true";
// エラーになる
// if (input)
// {
// Console.WriteLine("有効です");
// }
C#のif文では、条件式にbool型の値が必要です。そのため、文字列の"true"や"false"を判定に使いたい場合は、bool型へ変換する必要があります。
C#string input = "true";
bool result = bool.Parse(input);
if (result)
{
Console.WriteLine("有効です");
}
1-4. ToString・Parse・TryParseの使い分けを知りたいケース
ToString()、Parse()、TryParse()は、使う方向と安全性が異なります。
C#// bool → string
bool flag = true;
string text = flag.ToString();
// string → bool
bool value1 = bool.Parse("true");
// string → bool、安全に変換
bool value2;
bool success = bool.TryParse("true", out value2);
基本的な使い分けは次のようになります。
| メソッド | 変換方向 | 特徴 |
|---|---|---|
ToString() | bool → string | 表示やログ出力に使う |
bool.Parse() | string → bool | 不正な文字列では例外が発生する |
bool.TryParse() | string → bool | 変換に失敗しても例外が発生しない |
Convert.ToBoolean() | stringなど → bool | nullや数値も考慮できる |
実務では、外部入力を扱う場合はbool.TryParse()を優先するのが安全です。
2. C#のbool型とstring型の基本
C#でboolとstringを正しく変換するには、まずそれぞれの型の役割を理解しておく必要があります。
boolは真偽値を表す型で、条件分岐に使われます。stringは文字列を表す型で、画面表示、入力値、設定値、通信データなどでよく使われます。
2-1. bool型とは
bool型は、真偽値を表す型です。
値は次の2つだけです。
C#true
false
たとえば、ログイン済みかどうか、処理が成功したかどうか、有効か無効かなどを表すときに使います。
C#bool isLogin = true;
bool isDeleted = false;
if (isLogin)
{
Console.WriteLine("ログイン中です");
}
if (!isDeleted)
{
Console.WriteLine("削除されていません");
}
bool型は条件分岐と相性がよく、if文、while文、論理演算などで頻繁に使われます。
C#bool isAdmin = true;
bool isActive = true;
if (isAdmin && isActive)
{
Console.WriteLine("操作できます");
}
2-2. string型とは
string型は、文字列を表す型です。
C#string name = "Taro";
string message = "Hello";
string flagText = "true";
stringは、画面に表示するテキスト、ユーザーが入力した値、ファイルから読み込んだ値、APIから受け取った値などを扱うときに使います。
C#string input = "false";
Console.WriteLine(input);
この場合、inputの中身は"false"ですが、型はあくまでstringです。真偽値としてのfalseではありません。
2-3. bool値のtrue/falseと文字列の"true"/"false"の違い
C#では、trueと"true"は別物です。
C#bool boolValue = true;
string stringValue = "true";
boolValueはbool型です。一方、stringValueはstring型です。
見た目は似ていますが、使い方が違います。
C#bool boolValue = true;
if (boolValue)
{
Console.WriteLine("boolなので条件式に使えます");
}
しかし、文字列の"true"はそのまま条件式には使えません。
C#string stringValue = "true";
// エラーになる
// if (stringValue)
// {
// Console.WriteLine("これは実行できません");
// }
文字列を条件分岐で使うには、bool型に変換する必要があります。
C#string stringValue = "true";
bool boolValue = bool.Parse(stringValue);
if (boolValue)
{
Console.WriteLine("変換後なので条件式に使えます");
}
2-4. boolとstringを混同しやすいポイント
boolとstringで混同しやすいのは、見た目が似ている値です。
C#bool a = true;
string b = "true";
この2つは、表示するとどちらも似たように見えます。
C#Console.WriteLine(a);
Console.WriteLine(b);
実行結果は次のようになります。
True
true
しかし、型は異なります。
C#Console.WriteLine(a.GetType());
Console.WriteLine(b.GetType());
実行結果は次のようになります。
System.Boolean
System.String
boolは真偽値、stringは文字列です。C#では型が厳密に区別されるため、必要に応じて明示的に変換する必要があります。
3. boolをstringに変換する方法
boolをstringに変換する場合は、基本的にToString()を使います。
画面表示、ログ出力、メッセージ作成、JSONやCSVなどのテキスト出力でよく使われます。
3-1. ToString()を使ってboolをstringに変換する
bool型の値は、ToString()で文字列に変換できます。
C#bool isEnabled = true;
string text = isEnabled.ToString();
Console.WriteLine(text);
実行結果は次のとおりです。
True
falseの場合は次のようになります。
C#bool isEnabled = false;
string text = isEnabled.ToString();
Console.WriteLine(text);
実行結果は次のとおりです。
False
bool.ToString()は、trueを"True"、falseを"False"に変換します。
3-2. true.ToString()とfalse.ToString()の変換結果
trueやfalseのリテラルに対して直接ToString()を呼び出すこともできます。
C#string trueText = true.ToString();
string falseText = false.ToString();
Console.WriteLine(trueText);
Console.WriteLine(falseText);
実行結果は次のようになります。
True
False
注意点として、戻り値は"true"や"false"ではなく、"True"と"False"です。
小文字が必要な場合は、次のように書きます。
C#string trueText = true.ToString().ToLower();
string falseText = false.ToString().ToLower();
Console.WriteLine(trueText);
Console.WriteLine(falseText);
実行結果は次のとおりです。
true
false
ただし、単にC#内でstringからboolに戻す目的であれば、"True"でも"true"でも基本的に変換できます。
3-3. 文字列補間でboolをstringとして扱う方法
C#では、文字列補間を使うとbool値を自然に文字列へ埋め込めます。
C#bool isPublished = true;
string message = $"公開状態: {isPublished}";
Console.WriteLine(message);
実行結果は次のようになります。
公開状態: True
文字列補間では、内部的に値が文字列として扱われます。そのため、わざわざ次のように書かなくても問題ありません。
C#string message = $"公開状態: {isPublished.ToString()}";
通常は、次のようにシンプルに書けば十分です。
C#string message = $"公開状態: {isPublished}";
小文字で表示したい場合は、ToLower()を使います。
C#bool isPublished = true;
string message = $"公開状態: {isPublished.ToString().ToLower()}";
Console.WriteLine(message);
実行結果は次のとおりです。
公開状態: true
3-4. Console.WriteLineやログ出力での使い方
Console.WriteLine()にbool値を渡すと、文字列として出力されます。
C#bool isSuccess = true;
Console.WriteLine(isSuccess);
実行結果は次のとおりです。
True
ログ出力でも同じように使えます。
C#bool isSuccess = true;
bool hasError = false;
Console.WriteLine($"処理成功: {isSuccess}");
Console.WriteLine($"エラーあり: {hasError}");
実行結果は次のようになります。
処理成功: True
エラーあり: False
ログやデバッグ用途では、TrueやFalseのままでも十分なことが多いです。
一方で、画面表示として日本語にしたい場合は、三項演算子を使うとわかりやすくなります。
C#bool isActive = true;
string displayText = isActive ? "有効" : "無効";
Console.WriteLine(displayText);
実行結果は次のとおりです。
有効
4. stringをboolに変換する方法
stringをboolに変換する方法には、主に次の3つがあります。
C#bool.Parse("true");
bool.TryParse("true", out bool result);
Convert.ToBoolean("true");
それぞれ特徴が異なるため、入力値の信頼性によって使い分けることが大切です。
4-1. bool.Parse()を使ってstringをboolに変換する
bool.Parse()は、文字列をboolに変換するメソッドです。
C#string text = "true";
bool result = bool.Parse(text);
Console.WriteLine(result);
実行結果は次のとおりです。
True
"false"を渡した場合は、falseに変換されます。
C#string text = "false";
bool result = bool.Parse(text);
Console.WriteLine(result);
実行結果は次のとおりです。
False
bool.Parse()は、変換できる文字列であれば簡単に使えます。
C#bool a = bool.Parse("true");
bool b = bool.Parse("false");
bool c = bool.Parse("True");
bool d = bool.Parse("False");
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
実行結果は次のようになります。
True
False
True
False
ただし、不正な文字列を渡すと例外が発生します。
C#// FormatExceptionが発生する
bool result = bool.Parse("yes");
そのため、ユーザー入力や外部データのように値が不確実な場合は、bool.Parse()よりbool.TryParse()のほうが安全です。
4-2. bool.TryParse()を使って安全に変換する
bool.TryParse()は、文字列をboolに変換できるかどうかを判定しながら変換するメソッドです。
C#string text = "true";
bool result;
bool success = bool.TryParse(text, out result);
Console.WriteLine(success);
Console.WriteLine(result);
実行結果は次のとおりです。
True
True
変換に成功した場合、successはtrueになり、resultに変換後の値が入ります。
変換に失敗した場合は、successがfalseになります。
C#string text = "yes";
bool result;
bool success = bool.TryParse(text, out result);
Console.WriteLine(success);
Console.WriteLine(result);
実行結果は次のとおりです。
False
False
TryParse()は、変換に失敗しても例外が発生しません。そのため、フォーム入力、設定ファイル、APIレスポンスなど、外部から受け取る値を扱う場合に適しています。
C#では、次のようにout varを使って簡潔に書くこともできます。
C#string text = "true";
if (bool.TryParse(text, out bool result))
{
Console.WriteLine($"変換成功: {result}");
}
else
{
Console.WriteLine("変換できませんでした");
}
4-3. Convert.ToBoolean()でstringをboolに変換する
Convert.ToBoolean()でも、文字列をboolに変換できます。
C#string text = "true";
bool result = Convert.ToBoolean(text);
Console.WriteLine(result);
実行結果は次のとおりです。
True
"false"の場合は、falseになります。
C#string text = "false";
bool result = Convert.ToBoolean(text);
Console.WriteLine(result);
実行結果は次のとおりです。
False
Convert.ToBoolean()は、string以外の型も変換対象にできます。
C#bool a = Convert.ToBoolean("true");
bool b = Convert.ToBoolean(1);
bool c = Convert.ToBoolean(0);
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
実行結果は次のようになります。
True
True
False
数値の場合、0はfalse、0以外はtrueとして扱われます。
ただし、文字列の"1"や"0"は、trueやfalseとして自動変換されません。
C#// FormatExceptionが発生する
bool result = Convert.ToBoolean("1");
Convert.ToBoolean()は便利ですが、文字列の入力値が不確実な場合は例外に注意が必要です。
4-4. "True"・"False"以外の文字列を指定した場合の挙動
bool.Parse()やbool.TryParse()で変換できる代表的な文字列は、"True"と"False"です。
実際には、大文字・小文字の違いは許容されます。
C#Console.WriteLine(bool.Parse("true"));
Console.WriteLine(bool.Parse("TRUE"));
Console.WriteLine(bool.Parse("False"));
Console.WriteLine(bool.Parse("false"));
実行結果は次のようになります。
True
True
False
False
前後に空白があっても変換できます。
C#Console.WriteLine(bool.Parse(" true "));
Console.WriteLine(bool.Parse(" false "));
実行結果は次のとおりです。
True
False
一方で、次のような文字列は変換できません。
C#// 変換できない例
// "yes"
// "no"
// "1"
// "0"
// "はい"
// "いいえ"
// ""
bool.Parse()では、これらの値を渡すとFormatExceptionが発生します。
C#try
{
bool result = bool.Parse("yes");
Console.WriteLine(result);
}
catch (FormatException)
{
Console.WriteLine("boolに変換できない文字列です");
}
bool.TryParse()なら例外を発生させずに判定できます。
C#string text = "yes";
if (bool.TryParse(text, out bool result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine("変換できませんでした");
}
5. ToString・Parse・TryParse・Convert.ToBooleanの違い
C#でboolとstringを変換するときは、目的に応じてメソッドを選ぶ必要があります。
単純にboolを文字列にしたいならToString()、確実に"true"または"false"が入っているならParse()、外部入力を安全に扱うならTryParse()、nullや数値も含めて変換したいならConvert.ToBoolean()が候補になります。
5-1. ToStringはboolからstringへの変換に使う
ToString()は、boolからstringへ変換するときに使います。
C#bool value = true;
string text = value.ToString();
Console.WriteLine(text);
実行結果は次のとおりです。
True
ToString()は、反対方向の変換には使えません。
C#string text = "true";
// これはstringをstringにしているだけ
string result = text.ToString();
stringをboolにしたい場合は、Parse()やTryParse()を使います。
C#string text = "true";
bool result = bool.Parse(text);
5-2. Parseは変換失敗時に例外が発生する
bool.Parse()は、文字列をboolに変換します。
C#bool result = bool.Parse("true");
ただし、変換できない文字列を渡すと例外が発生します。
C#try
{
bool result = bool.Parse("abc");
Console.WriteLine(result);
}
catch (FormatException)
{
Console.WriteLine("変換に失敗しました");
}
実行結果は次のとおりです。
変換に失敗しました
Parse()は、入力値が必ず"true"または"false"であると保証できる場合に使うとよいでしょう。
たとえば、プログラム内部で生成した文字列を再変換する場合などです。
C#bool original = true;
string text = original.ToString();
bool parsed = bool.Parse(text);
Console.WriteLine(parsed);
5-3. TryParseは変換成功・失敗をboolで判定できる
bool.TryParse()は、変換できたかどうかを戻り値のboolで判定できます。
C#string text = "false";
if (bool.TryParse(text, out bool result))
{
Console.WriteLine($"変換成功: {result}");
}
else
{
Console.WriteLine("変換失敗");
}
実行結果は次のとおりです。
変換成功: False
不正な文字列でも例外は発生しません。
C#string text = "abc";
if (bool.TryParse(text, out bool result))
{
Console.WriteLine($"変換成功: {result}");
}
else
{
Console.WriteLine("変換失敗");
}
実行結果は次のとおりです。
変換失敗
TryParse()は、ユーザー入力や外部データを扱うときに非常に便利です。
5-4. Convert.ToBooleanはnullや数値変換も考慮できる
Convert.ToBoolean()は、stringだけでなく数値などもboolに変換できます。
C#Console.WriteLine(Convert.ToBoolean("true"));
Console.WriteLine(Convert.ToBoolean("false"));
Console.WriteLine(Convert.ToBoolean(1));
Console.WriteLine(Convert.ToBoolean(0));
実行結果は次のようになります。
True
False
True
False
また、stringのnullを渡した場合はfalseになります。
C#string text = null;
bool result = Convert.ToBoolean(text);
Console.WriteLine(result);
実行結果は次のとおりです。
False
一方で、bool.Parse()にnullを渡すと例外が発生します。
C#string text = null;
// ArgumentNullExceptionが発生する
bool result = bool.Parse(text);
この違いは重要です。
ただし、Convert.ToBoolean()でも不正な文字列を渡せば例外が発生します。
C#// FormatExceptionが発生する
bool result = Convert.ToBoolean("yes");
5-5. 実務ではTryParseを優先すべき理由
実務では、bool.TryParse()を優先する場面が多いです。
理由は、外部から来る値が常に正しいとは限らないからです。
C#string input = "true";
if (bool.TryParse(input, out bool result))
{
Console.WriteLine($"変換成功: {result}");
}
else
{
Console.WriteLine("不正な入力値です");
}
フォーム入力、設定ファイル、環境変数、APIレスポンスなどは、想定外の値が入る可能性があります。
C#string input = "on";
string config = "";
string apiValue = null;
このような値に対してbool.Parse()を使うと、例外処理が必要になります。
C#try
{
bool result = bool.Parse(input);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
一方、TryParse()なら例外を使わずに分岐できます。
C#if (!bool.TryParse(input, out bool result))
{
result = false;
}
読みやすく、安全で、実務向きの書き方です。
6. 変換時のエラーと安全な書き方
boolとstringの変換では、入力値によって例外が発生することがあります。
特に、bool.Parse()やConvert.ToBoolean()を使う場合は、null、空文字、不正な文字列に注意が必要です。
6-1. bool.ParseでFormatExceptionが発生するケース
bool.Parse()は、"true"または"false"として解釈できない文字列を渡すとFormatExceptionを発生させます。
C#bool result = bool.Parse("abc");
このコードは例外になります。
安全に書くなら、次のようにtry-catchを使います。
C#string text = "abc";
try
{
bool result = bool.Parse(text);
Console.WriteLine(result);
}
catch (FormatException)
{
Console.WriteLine("trueまたはfalseを指定してください");
}
ただし、変換失敗がよく起こり得る処理では、例外処理よりもTryParse()を使うほうが自然です。
C#string text = "abc";
if (bool.TryParse(text, out bool result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine("trueまたはfalseを指定してください");
}
6-2. nullを変換しようとした場合の注意点
nullを変換するときの挙動は、メソッドによって異なります。
C#string text = null;
bool.Parse()にnullを渡すと例外が発生します。
C#// ArgumentNullExceptionが発生する
bool result = bool.Parse(text);
bool.TryParse()にnullを渡すと、例外は発生せず、戻り値はfalseになります。
C#string text = null;
bool success = bool.TryParse(text, out bool result);
Console.WriteLine(success);
Console.WriteLine(result);
実行結果は次のとおりです。
False
False
Convert.ToBoolean()にstringのnullを渡した場合は、falseになります。
C#string text = null;
bool result = Convert.ToBoolean(text);
Console.WriteLine(result);
実行結果は次のとおりです。
False
このように、nullの扱いはメソッドごとに異なるため注意しましょう。
6-3. 空文字や不正な文字列を扱う方法
空文字はboolに変換できません。
C#string text = "";
// FormatExceptionが発生する
bool result = bool.Parse(text);
空白だけの文字列も変換できません。
C#string text = " ";
// FormatExceptionが発生する
bool result = bool.Parse(text);
安全に扱うには、string.IsNullOrWhiteSpace()とbool.TryParse()を組み合わせるとわかりやすくなります。
C#string text = "";
if (string.IsNullOrWhiteSpace(text))
{
Console.WriteLine("値が入力されていません");
}
else if (bool.TryParse(text, out bool result))
{
Console.WriteLine($"変換成功: {result}");
}
else
{
Console.WriteLine("trueまたはfalseを入力してください");
}
この書き方であれば、null、空文字、空白、不正な文字列を分けて扱えます。
6-4. 入力値チェックを含めた安全なサンプルコード
実務では、変換処理をメソッド化しておくと便利です。
C#static bool TryConvertToBool(string text, out bool result)
{
result = false;
if (string.IsNullOrWhiteSpace(text))
{
return false;
}
return bool.TryParse(text, out result);
}
使い方は次のとおりです。
C#string input = "true";
if (TryConvertToBool(input, out bool value))
{
Console.WriteLine($"変換成功: {value}");
}
else
{
Console.WriteLine("変換できませんでした");
}
実行結果は次のようになります。
変換成功: True
デフォルト値を返すメソッドにすることもできます。
C#static bool ToBoolOrDefault(string text, bool defaultValue = false)
{
if (bool.TryParse(text, out bool result))
{
return result;
}
return defaultValue;
}
使い方は次のとおりです。
C#bool value1 = ToBoolOrDefault("true");
bool value2 = ToBoolOrDefault("abc");
bool value3 = ToBoolOrDefault("abc", true);
Console.WriteLine(value1);
Console.WriteLine(value2);
Console.WriteLine(value3);
実行結果は次のようになります。
True
False
True
外部入力を扱う場合は、このように「変換できなかったときにどうするか」を明確にしておくことが大切です。
7. 実務で使えるboolとstringの変換サンプル
ここからは、実務でよくあるboolとstringの変換例を紹介します。
フォーム入力、設定ファイル、APIレスポンス、画面表示など、実際の開発でそのまま応用しやすい形で見ていきましょう。
7-1. フォーム入力の文字列をboolに変換する
Webフォームや画面入力では、値が文字列として送られてくることがあります。
C#string formValue = "true";
この値をboolとして扱いたい場合は、TryParse()を使うと安全です。
C#string formValue = "true";
if (bool.TryParse(formValue, out bool isChecked))
{
if (isChecked)
{
Console.WriteLine("チェックされています");
}
else
{
Console.WriteLine("チェックされていません");
}
}
else
{
Console.WriteLine("不正な入力値です");
}
チェックボックスの値などでは、"on"や"1"が送られてくる場合もあります。その場合、bool.TryParse()だけでは変換できないため、独自に変換ルールを用意します。
C#static bool ConvertFormValueToBool(string value)
{
if (string.IsNullOrWhiteSpace(value))
{
return false;
}
value = value.Trim().ToLower();
return value == "true" || value == "on" || value == "1";
}
使い方は次のとおりです。
C#string formValue = "on";
bool isChecked = ConvertFormValueToBool(formValue);
Console.WriteLine(isChecked);
実行結果は次のとおりです。
True
7-2. 設定ファイルの値をboolに変換する
設定ファイルでは、機能の有効・無効を文字列で管理することがあります。
C#string configValue = "true";
設定値をboolに変換する場合も、TryParse()を使うと安全です。
C#string configValue = "true";
bool isFeatureEnabled;
if (!bool.TryParse(configValue, out isFeatureEnabled))
{
isFeatureEnabled = false;
}
Console.WriteLine(isFeatureEnabled);
実行結果は次のとおりです。
True
デフォルト値を含めてメソッド化すると、設定値の読み込み処理で使いやすくなります。
C#static bool GetBoolSetting(string value, bool defaultValue = false)
{
if (bool.TryParse(value, out bool result))
{
return result;
}
return defaultValue;
}
使い方は次のとおりです。
C#string configValue1 = "true";
string configValue2 = "invalid";
bool setting1 = GetBoolSetting(configValue1);
bool setting2 = GetBoolSetting(configValue2);
bool setting3 = GetBoolSetting(configValue2, true);
Console.WriteLine(setting1);
Console.WriteLine(setting2);
Console.WriteLine(setting3);
実行結果は次のようになります。
True
False
True
設定値は環境によって変更される可能性があるため、Parse()で決め打ちするより、TryParse()で安全に扱うほうが実務向きです。
7-3. APIレスポンスの文字列をboolに変換する
APIレスポンスで、真偽値が文字列として返ってくることがあります。
C#string apiValue = "false";
この値をboolとして扱いたい場合は、次のように変換します。
C#string apiValue = "false";
if (bool.TryParse(apiValue, out bool isSuccess))
{
Console.WriteLine($"API結果: {isSuccess}");
}
else
{
Console.WriteLine("APIの値をboolに変換できませんでした");
}
実行結果は次のとおりです。
API結果: False
APIによっては、"1"、"0"、"yes"、"no"のような値が返ることもあります。その場合は、API仕様に合わせた変換処理を用意します。
C#static bool TryConvertApiBool(string value, out bool result)
{
result = false;
if (string.IsNullOrWhiteSpace(value))
{
return false;
}
switch (value.Trim().ToLower())
{
case "true":
case "1":
case "yes":
result = true;
return true;
case "false":
case "0":
case "no":
result = false;
return true;
default:
return false;
}
}
使い方は次のとおりです。
C#string apiValue = "1";
if (TryConvertApiBool(apiValue, out bool result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine("変換できませんでした");
}
実行結果は次のとおりです。
True
APIレスポンスの変換では、C#標準の変換メソッドだけに頼るのではなく、APIの仕様に合わせて処理することが重要です。
7-4. bool値を画面表示用の文字列に変換する
bool値をそのまま表示すると、TrueやFalseになります。
C#bool isActive = true;
Console.WriteLine(isActive.ToString());
実行結果は次のとおりです。
True
管理画面やユーザー向け画面では、TrueやFalseよりも有効、無効、はい、いいえのように表示したほうがわかりやすい場合があります。
C#bool isActive = true;
string displayText = isActive ? "有効" : "無効";
Console.WriteLine(displayText);
実行結果は次のとおりです。
有効
複数の場所で使うなら、メソッド化しておくと便利です。
C#static string ToDisplayText(bool value)
{
return value ? "はい" : "いいえ";
}
使い方は次のとおりです。
C#bool isMember = false;
string text = ToDisplayText(isMember);
Console.WriteLine(text);
実行結果は次のとおりです。
いいえ
画面表示用の文字列と内部処理用のboolは、分けて考えるとコードがわかりやすくなります。
8. boolとstring変換でよくある質問
最後に、C#のboolとstring変換でよくある疑問を整理します。
"true"と"True"の違い、"1"や"0"の扱い、nullの挙動、日本語の"はい"や"いいえ"を変換できるかどうかは、特に間違えやすいポイントです。
8-1. "true"と"True"はどちらも変換できるか
"true"と"True"は、どちらもboolに変換できます。
C#bool a = bool.Parse("true");
bool b = bool.Parse("True");
bool c = bool.Parse("TRUE");
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
実行結果は次のようになります。
True
True
True
falseも同様です。
C#bool a = bool.Parse("false");
bool b = bool.Parse("False");
bool c = bool.Parse("FALSE");
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);
実行結果は次のようになります。
False
False
False
bool.Parse()やbool.TryParse()では、大文字・小文字の違いは基本的に気にしなくて問題ありません。
8-2. "1"や"0"はboolに変換できるか
文字列の"1"や"0"は、bool.Parse()やbool.TryParse()では標準的にはboolに変換できません。
C#bool success1 = bool.TryParse("1", out bool result1);
bool success2 = bool.TryParse("0", out bool result2);
Console.WriteLine(success1);
Console.WriteLine(result1);
Console.WriteLine(success2);
Console.WriteLine(result2);
実行結果は次のようになります。
False
False
False
False
また、Convert.ToBoolean("1")のように文字列として渡した場合も、trueには変換されません。
C#// FormatExceptionが発生する
bool result = Convert.ToBoolean("1");
ただし、数値の1や0であれば、Convert.ToBoolean()で変換できます。
C#bool a = Convert.ToBoolean(1);
bool b = Convert.ToBoolean(0);
Console.WriteLine(a);
Console.WriteLine(b);
実行結果は次のとおりです。
True
False
文字列の"1"や"0"を扱いたい場合は、独自に変換処理を書きます。
C#static bool TryParseBoolLikeValue(string value, out bool result)
{
result = false;
if (string.IsNullOrWhiteSpace(value))
{
return false;
}
switch (value.Trim())
{
case "true":
case "True":
case "1":
result = true;
return true;
case "false":
case "False":
case "0":
result = false;
return true;
default:
return false;
}
}
8-3. nullをboolに変換するとどうなるか
nullをboolに変換した場合の挙動は、使うメソッドによって異なります。
bool.Parse()では例外が発生します。
C#string value = null;
// ArgumentNullExceptionが発生する
bool result = bool.Parse(value);
bool.TryParse()では例外は発生せず、変換失敗として扱われます。
C#string value = null;
bool success = bool.TryParse(value, out bool result);
Console.WriteLine(success);
Console.WriteLine(result);
実行結果は次のとおりです。
False
False
Convert.ToBoolean()にstringのnullを渡した場合は、falseになります。
C#string value = null;
bool result = Convert.ToBoolean(value);
Console.WriteLine(result);
実行結果は次のとおりです。
False
nullの可能性がある値を扱う場合は、TryParse()を使うか、事前にnullチェックを行いましょう。
C#string value = null;
if (!string.IsNullOrWhiteSpace(value) && bool.TryParse(value, out bool result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine("値が未設定、または変換できません");
}
8-4. 日本語の"はい"/"いいえ"をboolに変換できるか
C#標準のbool.Parse()やbool.TryParse()では、日本語の"はい"や"いいえ"はboolに変換できません。
C#bool success = bool.TryParse("はい", out bool result);
Console.WriteLine(success);
Console.WriteLine(result);
実行結果は次のとおりです。
False
False
日本語の値を扱いたい場合は、独自に変換処理を作ります。
C#static bool TryParseJapaneseBool(string value, out bool result)
{
result = false;
if (string.IsNullOrWhiteSpace(value))
{
return false;
}
switch (value.Trim())
{
case "はい":
case "有効":
case "真":
result = true;
return true;
case "いいえ":
case "無効":
case "偽":
result = false;
return true;
default:
return false;
}
}
使い方は次のとおりです。
C#string input = "はい";
if (TryParseJapaneseBool(input, out bool result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine("変換できませんでした");
}
実行結果は次のとおりです。
True
日本語表示と内部処理のbool値を対応させる場合は、どの文字列をtrueとして扱い、どの文字列をfalseとして扱うのかを明確にしておくことが重要です。
まとめ
C#でboolとstringを相互変換する場合は、変換方向と入力値の安全性に応じてメソッドを使い分けます。
boolからstringへ変換する場合は、基本的にToString()を使います。
C#bool value = true;
string text = value.ToString();
Console.WriteLine(text);
実行結果は次のとおりです。
True
stringからboolへ変換する場合は、bool.Parse()、bool.TryParse()、Convert.ToBoolean()が使えます。
C#bool a = bool.Parse("true");
bool success = bool.TryParse("false", out bool b);
bool c = Convert.ToBoolean("true");
ただし、bool.Parse()は不正な文字列やnullで例外が発生するため、外部入力を扱う場合は注意が必要です。
実務では、次のようにbool.TryParse()を使う書き方が安全です。
C#string input = "true";
if (bool.TryParse(input, out bool result))
{
Console.WriteLine($"変換成功: {result}");
}
else
{
Console.WriteLine("変換できませんでした");
}
"true"、"false"、"True"、"False"は変換できますが、"1"、"0"、"はい"、"いいえ"などは標準では変換できません。これらを扱いたい場合は、独自の変換ルールを用意しましょう。
C#のboolとstring変換では、次のように覚えておくと整理しやすいです。
| やりたいこと | 使うメソッド |
|---|---|
boolをstringにしたい | ToString() |
正しい文字列をboolにしたい | bool.Parse() |
安全に文字列をboolにしたい | bool.TryParse() |
nullや数値も含めて変換したい | Convert.ToBoolean() |
"1"や"はい"なども扱いたい | 独自変換処理 |
迷った場合は、boolからstringならToString()、stringからboolならTryParse()を使う、と考えると実務で安全に対応できます。

