C#でboolとstringを相互変換する方法|ToString・Parse・TryParseの使い分け

はじめに

C#で開発していると、boolstringを相互に変換したい場面はよくあります。

たとえば、truefalseの値を画面やログに表示したい場合は、boolstringに変換します。一方で、フォーム入力、設定ファイル、APIレスポンスなどから取得した文字列の"true""false"をプログラム内で判定したい場合は、stringboolに変換します。

C#では、主に次の方法を使ってboolstringを変換します。

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#でboolstringを変換する方法について、ToString()Parse()TryParse()Convert.ToBoolean()の違いと使い分けをわかりやすく解説します。

1. [c# bool string]で検索するユーザーの疑問とこの記事で解決できること

C#でboolstringを扱うとき、多くの人が迷いやすいのは「変換方法そのもの」だけではありません。

true"true"は何が違うのか、bool.Parse()bool.TryParse()はどちらを使えばよいのか、"1""0"は変換できるのか、nullや空文字を渡すとどうなるのか、といった点も重要です。

この記事では、C#のboolstringの基本から、実務で安全に使える変換方法まで順番に解説します。

1-1. boolとstringの変換でよくある利用シーン

boolstringの変換は、次のような場面でよく使われます。

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()boolstring表示やログ出力に使う
bool.Parse()stringbool不正な文字列では例外が発生する
bool.TryParse()stringbool変換に失敗しても例外が発生しない
Convert.ToBoolean()stringなど → boolnullや数値も考慮できる

実務では、外部入力を扱う場合はbool.TryParse()を優先するのが安全です。

2. C#のbool型とstring型の基本

C#でboolstringを正しく変換するには、まずそれぞれの型の役割を理解しておく必要があります。

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";

boolValuebool型です。一方、stringValuestring型です。

見た目は似ていますが、使い方が違います。

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を混同しやすいポイント

boolstringで混同しやすいのは、見た目が似ている値です。

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に変換する方法

boolstringに変換する場合は、基本的に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()の変換結果

truefalseのリテラルに対して直接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

ログやデバッグ用途では、TrueFalseのままでも十分なことが多いです。

一方で、画面表示として日本語にしたい場合は、三項演算子を使うとわかりやすくなります。

C#
bool isActive = true;

string displayText = isActive ? "有効" : "無効";

Console.WriteLine(displayText);

実行結果は次のとおりです。

有効

4. stringをboolに変換する方法

stringboolに変換する方法には、主に次の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

変換に成功した場合、successtrueになり、resultに変換後の値が入ります。

変換に失敗した場合は、successfalseになります。

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

数値の場合、0false0以外はtrueとして扱われます。

ただし、文字列の"1""0"は、truefalseとして自動変換されません。

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#でboolstringを変換するときは、目的に応じてメソッドを選ぶ必要があります。

単純に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();

stringboolにしたい場合は、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

また、stringnullを渡した場合は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. 変換時のエラーと安全な書き方

boolstringの変換では、入力値によって例外が発生することがあります。

特に、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()stringnullを渡した場合は、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の変換サンプル

ここからは、実務でよくあるboolstringの変換例を紹介します。

フォーム入力、設定ファイル、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値をそのまま表示すると、TrueFalseになります。

C#
bool isActive = true;

Console.WriteLine(isActive.ToString());

実行結果は次のとおりです。

True

管理画面やユーザー向け画面では、TrueFalseよりも有効無効はいいいえのように表示したほうがわかりやすい場合があります。

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#のboolstring変換でよくある疑問を整理します。

"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");

ただし、数値の10であれば、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に変換するとどうなるか

nullboolに変換した場合の挙動は、使うメソッドによって異なります。

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()stringnullを渡した場合は、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#でboolstringを相互変換する場合は、変換方向と入力値の安全性に応じてメソッドを使い分けます。

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#のboolstring変換では、次のように覚えておくと整理しやすいです。

やりたいこと使うメソッド
boolstringにしたいToString()
正しい文字列をboolにしたいbool.Parse()
安全に文字列をboolにしたいbool.TryParse()
nullや数値も含めて変換したいConvert.ToBoolean()
"1""はい"なども扱いたい独自変換処理

迷った場合は、boolからstringならToString()stringからboolならTryParse()を使う、と考えると実務で安全に対応できます。