C#のbool型とは?true/falseの使い方・判定・変換まで初心者向けに解説

はじめに

C#で条件分岐や判定処理を書くときに必ず登場するのがbool型です。bool型は、値が「正しいか」「間違っているか」を表すためのデータ型で、trueまたはfalseのどちらかを持ちます。

たとえば、「ログインしているか」「入力内容が正しいか」「成人かどうか」「処理に成功したか」といった判定には、C#のbool型がよく使われます。

この記事では、C#のbool型について、基本的な使い方から条件分岐、変換、bool?、初心者がつまずきやすいポイントまでわかりやすく解説します。

1. C#のbool型とは?true/falseで真偽を表す基本

C#のbool型は、真偽値を扱うための基本的なデータ型です。真偽値とは、「真」または「偽」を表す値のことです。

C#では、真をtrue、偽をfalseと書きます。

C#
bool isActive = true;
bool isDeleted = false;

このように、bool型の変数にはtrueまたはfalseを代入します。

1-1. bool型は「正しい/間違い」を表すデータ型

bool型は、何かの状態や判定結果を表すときに使います。

たとえば、次のような内容を表現できます。

C#
bool isLoggedIn = true;
bool hasError = false;
bool isAdult = true;

それぞれの意味は次のようになります。

isLoggedInは「ログインしているかどうか」、hasErrorは「エラーがあるかどうか」、isAdultは「成人かどうか」を表しています。

このように、bool型は「はい/いいえ」「オン/オフ」「有効/無効」のような二択の状態を扱うときに便利です。

1-2. trueとfalseの意味

C#におけるtruefalseは、次の意味を持ちます。

C#
true  // 真、正しい、条件を満たしている
false // 偽、間違い、条件を満たしていない

たとえば、年齢が20歳以上なら成人と判定する場合、条件を満たしていればtrue、満たしていなければfalseになります。

C#
int age = 25;
bool isAdult = age >= 20;

Console.WriteLine(isAdult); // True

age >= 20という比較の結果がtrueになり、その値がisAdultに代入されます。

1-3. bool型が使われる主な場面

bool型は、C#のさまざまな場面で使われます。

代表的な使い方は、条件分岐です。

C#
bool isLoggedIn = true;

if (isLoggedIn)
{
Console.WriteLine("ログイン済みです");
}

ほかにも、メソッドの戻り値として使うこともよくあります。

C#
bool IsValidName(string name)
{
return !string.IsNullOrEmpty(name);
}

このメソッドは、名前が入力されていればtrue、空文字やnullならfalseを返します。

1-4. bool型とBoolean型の違い

C#にはboolBooleanがありますが、基本的には同じものです。

boolはC#のキーワードで、System.Booleanの別名です。

C#
bool flag1 = true;
Boolean flag2 = false;
System.Boolean flag3 = true;

上の3つは、どれも真偽値を扱う型です。

通常のC#コードでは、boolを使うのが一般的です。BooleanSystem.Booleanは、.NETの型名として説明やライブラリ内部で見かけることがあります。

2. C#でbool型の変数を宣言・代入する方法

C#でbool型を使うには、変数を宣言してtrueまたはfalseを代入します。

基本の形は次のとおりです。

C#
bool 変数名 = true;
bool 変数名 = false;

2-1. bool型の基本的な書き方

bool型の変数は、次のように宣言します。

C#
bool isEnabled;

ただし、この状態ではローカル変数としてはまだ値が代入されていません。実際に使う前に、trueまたはfalseを代入する必要があります。

C#
bool isEnabled;
isEnabled = true;

Console.WriteLine(isEnabled);

最初から値を入れる場合は、次のように書きます。

C#
bool isEnabled = true;

2-2. trueを代入する例

trueを代入すると、その変数は「真」の状態になります。

C#
bool isVisible = true;

if (isVisible)
{
Console.WriteLine("表示します");
}

この例では、isVisibletrueなので、if文の中の処理が実行されます。

2-3. falseを代入する例

falseを代入すると、その変数は「偽」の状態になります。

C#
bool isVisible = false;

if (isVisible)
{
Console.WriteLine("表示します");
}

この例では、isVisiblefalseなので、if文の中の処理は実行されません。

2-4. 初期値を指定しない場合の注意点

C#では、クラスのフィールドとして宣言したbool型の初期値はfalseです。

C#
class User
{
public bool IsActive;
}

この場合、IsActiveには自動的にfalseが入ります。

一方で、メソッド内のローカル変数は、値を代入する前に使うことはできません。

C#
void Sample()
{
bool isActive;

// Console.WriteLine(isActive); // エラー
}

ローカル変数として使う場合は、必ず初期値を代入しましょう。

C#
void Sample()
{
bool isActive = false;
Console.WriteLine(isActive);
}

2-5. varを使ってbool型を扱う方法

C#では、varを使って変数を宣言することもできます。

C#
var isActive = true;

この場合、右辺のtrueから、C#コンパイラがisActivebool型だと判断します。

次のように比較式の結果を代入する場合も、型はboolになります。

C#
int score = 80;
var isPassed = score >= 60;

Console.WriteLine(isPassed); // True

varは便利ですが、初心者のうちは型がわかりやすいように、まずはboolと明示して書くのがおすすめです。

3. bool型を使った条件分岐の基本

bool型は、if文と組み合わせてよく使われます。

if文は、条件がtrueのときだけ処理を実行する構文です。

C#
if (条件式)
{
// 条件式がtrueのときに実行される処理
}

この条件式には、最終的にbool型の値になる式を書く必要があります。

3-1. if文でbool型を判定する方法

bool型の変数は、そのままif文の条件として使えます。

C#
bool isLoggedIn = true;

if (isLoggedIn)
{
Console.WriteLine("ログインしています");
}

isLoggedIntrueなので、メッセージが表示されます。

3-2. trueの場合だけ処理を実行する

bool変数がtrueのときだけ処理を実行したい場合は、次のように書きます。

C#
bool hasPermission = true;

if (hasPermission)
{
Console.WriteLine("操作できます");
}

この書き方は、C#で非常によく使われます。

変数名をhasPermissionのように意味がわかる名前にしておくと、コードが読みやすくなります。

3-3. falseの場合の処理をelseで書く

bool型がfalseだった場合の処理を書きたいときは、elseを使います。

C#
bool isLoggedIn = false;

if (isLoggedIn)
{
Console.WriteLine("マイページを表示します");
}
else
{
Console.WriteLine("ログインしてください");
}

この例では、isLoggedInfalseなので、else側の処理が実行されます。

3-4. bool変数を条件式にそのまま使う書き方

bool型の変数は、すでにtrueまたはfalseを持っているため、条件式にそのまま書けます。

C#
if (isActive)
{
Console.WriteLine("有効です");
}

次のように書くこともできますが、少し冗長です。

C#
if (isActive == true)
{
Console.WriteLine("有効です");
}

通常は、if (isActive)のようにシンプルに書くほうが読みやすくなります。

3-5. 「== true」「== false」は必要か

通常のbool型では、== trueは基本的に不要です。

C#
if (isActive == true)
{
}

これは、次のように書けます。

C#
if (isActive)
{
}

falseを判定したい場合は、!を使います。

C#
if (!isActive)
{
Console.WriteLine("無効です");
}

ただし、bool?のようにnullを扱う場合は、== true== falseを使うことで意図が明確になることがあります。

C#
bool? isApproved = null;

if (isApproved == true)
{
Console.WriteLine("承認済みです");
}

通常のboolではシンプルに、bool?では必要に応じて明示的に書くとよいでしょう。

4. 比較演算子・論理演算子でbool値を作る

bool型の値は、直接truefalseを代入するだけでなく、比較演算子や論理演算子によって作ることもできます。

たとえば、数値を比較した結果はbool型になります。

C#
int age = 18;
bool isAdult = age >= 20;

この場合、age >= 20の結果はfalseです。

4-1. 比較演算子の結果はbool型になる

比較演算子を使うと、結果としてtrueまたはfalseが返ります。

C#
int score = 75;

bool result = score >= 60;

Console.WriteLine(result); // True

score >= 60は「scoreが60以上かどうか」を判定しています。条件を満たしているので、結果はtrueです。

4-2. ==・!=・>・<・>=・<=の使い方

C#でよく使う比較演算子は次のとおりです。

演算子意味
==等しいx == y
!=等しくないx != y
>より大きいx > y
<より小さいx < y
>=以上x >= y
<=以下x <= y

実際のコードは次のようになります。

C#
int x = 10;
int y = 20;

Console.WriteLine(x == y); // False
Console.WriteLine(x != y); // True
Console.WriteLine(x > y); // False
Console.WriteLine(x < y); // True
Console.WriteLine(x >= y); // False
Console.WriteLine(x <= y); // True

比較演算子の結果はすべてbool型です。

4-3. &&で「かつ」を表す

&&は「かつ」を表す論理演算子です。

複数の条件がすべてtrueのときだけ、全体がtrueになります。

C#
int age = 25;
bool hasTicket = true;

if (age >= 18 && hasTicket)
{
Console.WriteLine("入場できます");
}

この例では、「18歳以上」かつ「チケットを持っている」場合にだけ処理が実行されます。

4-4. ||で「または」を表す

||は「または」を表す論理演算子です。

複数の条件のうち、どれか1つでもtrueなら全体がtrueになります。

C#
bool isAdmin = false;
bool isOwner = true;

if (isAdmin || isOwner)
{
Console.WriteLine("編集できます");
}

この例では、管理者ではありませんが所有者なので、条件全体はtrueになります。

4-5. !でtrue/falseを反転する

!は、bool値を反転する演算子です。

trueに付けるとfalseになり、falseに付けるとtrueになります。

C#
bool isLoggedIn = false;

if (!isLoggedIn)
{
Console.WriteLine("ログインしてください");
}

!isLoggedInは「ログインしていない場合」という意味になります。

4-6. 複数条件を組み合わせるときの注意点

複数の条件を組み合わせるときは、条件が複雑になりすぎないように注意しましょう。

C#
if (age >= 20 && hasLicense && !isSuspended)
{
Console.WriteLine("運転できます");
}

この程度なら読みやすいですが、条件が長くなる場合は、意味のあるbool変数に分けるとわかりやすくなります。

C#
bool isAdult = age >= 20;
bool canDrive = hasLicense && !isSuspended;

if (isAdult && canDrive)
{
Console.WriteLine("運転できます");
}

条件式を分けることで、コードの意味が読み取りやすくなります。

5. bool型の変換方法

C#では、文字列や数値をbool型に変換したい場面があります。

たとえば、設定ファイルや入力フォームから受け取った文字列"true"を、bool型のtrueとして扱いたい場合です。

文字列からbool型に変換するには、主にbool.Parseまたはbool.TryParseを使います。

5-1. 文字列をbool型に変換する方法

文字列をbool型に変換する代表的な方法は次の2つです。

C#
bool.Parse("true");
bool.TryParse("true", out bool result);

bool.Parseは、変換できることが確実な場合に使います。

bool.TryParseは、変換できるかわからない場合に使います。

初心者には、エラーになりにくいbool.TryParseがおすすめです。

5-2. bool.Parseの使い方

bool.Parseを使うと、文字列をbool型に変換できます。

C#
string text = "true";
bool result = bool.Parse(text);

Console.WriteLine(result); // True

"false"も変換できます。

C#
string text = "false";
bool result = bool.Parse(text);

Console.WriteLine(result); // False

bool.Parseでは、"True""False"のような文字列も変換できます。

5-3. bool.TryParseの使い方

bool.TryParseは、変換に成功したかどうかをboolで返します。

C#
string text = "true";

bool success = bool.TryParse(text, out bool result);

Console.WriteLine(success); // True
Console.WriteLine(result); // True

変換に失敗した場合でも、例外が発生しないため安全です。

C#
string text = "yes";

bool success = bool.TryParse(text, out bool result);

Console.WriteLine(success); // False
Console.WriteLine(result); // False

successfalseなら、変換に失敗したと判断できます。

5-4. true/false以外の文字列を変換するとどうなるか

bool.Parse"yes""1"のような文字列を変換しようとすると、エラーになります。

C#
string text = "yes";

// bool result = bool.Parse(text); // エラー

bool.Parseは、変換できない文字列を渡すと例外が発生します。

一方、bool.TryParseなら例外は発生しません。

C#
string text = "yes";

if (bool.TryParse(text, out bool result))
{
Console.WriteLine(result);
}
else
{
Console.WriteLine("bool型に変換できません");
}

ユーザー入力や外部データを扱う場合は、bool.TryParseを使うと安全です。

5-5. 数値の0や1をbool型として扱えるのか

C#では、01を直接bool型として扱うことはできません。

C#
// bool flag = 1; // エラー
// bool flag = 0; // エラー

CやC++などでは、0false1trueのように扱う場合がありますが、C#では明確に区別されます。

数値からboolに変換したい場合は、条件式を書くのがわかりやすいです。

C#
int value = 1;

bool flag = value == 1;

Console.WriteLine(flag); // True

また、Convert.ToBooleanを使うこともできます。

C#
bool flag1 = Convert.ToBoolean(1);
bool flag2 = Convert.ToBoolean(0);

Console.WriteLine(flag1); // True
Console.WriteLine(flag2); // False

ただし、初心者のうちはvalue == 1のように、条件を明示して書くほうが意図が伝わりやすいです。

5-6. bool型を文字列に変換する方法

bool型を文字列に変換するには、ToStringを使います。

C#
bool isActive = true;

string text = isActive.ToString();

Console.WriteLine(text); // True

falseの場合は、"False"という文字列になります。

C#
bool isActive = false;

string text = isActive.ToString();

Console.WriteLine(text); // False

画面表示やログ出力でbool値を文字列として使いたい場合に便利です。

6. nullable bool(bool?)とは

C#には、通常のbool型とは別に、bool?という型があります。

bool?は、truefalseに加えて、nullも扱える型です。

C#
bool? isChecked = null;

このように、まだ値が決まっていない状態を表すことができます。

6-1. bool?はtrue・false・nullを扱える型

通常のbool型は、trueまたはfalseのどちらかしか持てません。

C#
bool flag = true;

一方、bool?は次の3つの状態を持てます。

C#
bool? flag1 = true;
bool? flag2 = false;
bool? flag3 = null;

nullは「値がない」「未設定」「不明」といった状態を表します。

6-2. 通常のbool型との違い

通常のbool型は、必ずtruefalseのどちらかです。

C#
bool isEnabled = false;

bool?は、値が未設定であることも表せます。

C#
bool? isEnabled = null;

たとえば、アンケートで「はい」「いいえ」「未回答」を区別したい場合、bool?が便利です。

C#
bool? answer = null; // 未回答

6-3. bool?を使う場面

bool?は、次のような場面で使われます。

C#
bool? isApproved = null;

これは、「承認済み」「却下済み」「まだ確認していない」のような3つの状態を表せます。

C#
true  // 承認済み
false // 却下済み
null // 未確認

通常のboolだけでは、falseが「却下」なのか「まだ未確認」なのか区別できません。

6-4. null判定の書き方

bool?nullかどうかを判定するには、== nullを使います。

C#
bool? isApproved = null;

if (isApproved == null)
{
Console.WriteLine("まだ判定されていません");
}

値があるかどうかは、HasValueでも確認できます。

C#
if (isApproved.HasValue)
{
Console.WriteLine("値があります");
}
else
{
Console.WriteLine("値がありません");
}

実際の値を取り出すには、Valueを使えます。

C#
if (isApproved.HasValue)
{
Console.WriteLine(isApproved.Value);
}

ただし、nullの状態でValueを使うとエラーになるため、必ずHasValueで確認してから使いましょう。

6-5. GetValueOrDefaultを使う方法

GetValueOrDefaultを使うと、bool?nullの場合に既定値を返せます。

C#
bool? isApproved = null;

bool result = isApproved.GetValueOrDefault();

Console.WriteLine(result); // False

引数を指定すると、nullの場合の値を自分で決められます。

C#
bool? isApproved = null;

bool result = isApproved.GetValueOrDefault(true);

Console.WriteLine(result); // True

nullfalseとして扱いたい場合や、初期値を決めて処理したい場合に便利です。

6-6. bool?をif文で扱うときの注意点

bool?は、そのままif文の条件として使えません。

C#
bool? isApproved = true;

// if (isApproved) // エラー
// {
// }

if文の条件式にはbool型が必要ですが、bool?nullの可能性があるためです。

trueの場合だけ処理したいなら、次のように書きます。

C#
if (isApproved == true)
{
Console.WriteLine("承認されています");
}

falseの場合だけ処理したいなら、次のように書きます。

C#
if (isApproved == false)
{
Console.WriteLine("却下されています");
}

nullも含めて扱いたい場合は、明示的に分岐しましょう。

C#
if (isApproved == true)
{
Console.WriteLine("承認");
}
else if (isApproved == false)
{
Console.WriteLine("却下");
}
else
{
Console.WriteLine("未確認");
}

7. C#のbool型で初心者がつまずきやすいポイント

bool型はシンプルな型ですが、初心者がつまずきやすいポイントもあります。

特に、数値との違い、===の違い、大文字小文字、条件式の書き方には注意が必要です。

7-1. bool型に数値を直接代入できない

C#では、bool型に01を直接代入することはできません。

C#
// bool isActive = 1; // エラー
// bool isActive = 0; // エラー

正しくは、trueまたはfalseを代入します。

C#
bool isActive = true;
bool isDeleted = false;

数値から判定したい場合は、比較式を使いましょう。

C#
int status = 1;

bool isActive = status == 1;

7-2. if文の条件式にはbool型が必要

C#のif文には、bool型の条件式が必要です。

C#
int count = 1;

// if (count) // エラー
// {
// }

C#では、数値をそのまま条件式として使えません。

正しくは、比較演算子を使います。

C#
if (count > 0)
{
Console.WriteLine("データがあります");
}

count > 0の結果がbool型になるため、if文で使えます。

7-3. =と==の違い

===は意味が違います。

=は代入です。

C#
bool isActive = true;

==は比較です。

C#
bool isActive = true;

if (isActive == true)
{
Console.WriteLine("有効です");
}

ただし、通常のbool変数では、次のように書くほうが自然です。

C#
if (isActive)
{
Console.WriteLine("有効です");
}

===を間違えると、意図しないエラーやバグにつながるため注意しましょう。

7-4. 大文字小文字の違いに注意する

C#では、大文字小文字が区別されます。

truefalseはすべて小文字で書きます。

C#
bool flag1 = true;
bool flag2 = false;

次のように書くとエラーになります。

C#
// bool flag = True;  // エラー
// bool flag = False; // エラー

一方、Console.WriteLineで表示した場合は、TrueFalseのように先頭が大文字で表示されます。

C#
bool flag = true;

Console.WriteLine(flag); // True

コードで書くときはtruefalse、表示される文字列はTrueFalseと覚えておくとよいでしょう。

7-5. true/falseの判定を複雑に書きすぎない

初心者のうちは、次のように冗長な書き方をしてしまうことがあります。

C#
if (isActive == true)
{
Console.WriteLine("有効です");
}

間違いではありませんが、通常は次のように書きます。

C#
if (isActive)
{
Console.WriteLine("有効です");
}

falseを判定したい場合も、次のようにシンプルに書けます。

C#
if (!isActive)
{
Console.WriteLine("無効です");
}

読みやすいコードを書くためには、bool変数の意味が自然に読めるようにすることが大切です。

7-6. 変数名は意味が伝わる名前にする

bool型の変数名は、意味が伝わる名前にしましょう。

悪い例です。

C#
bool flag = true;
bool check = false;

これだけでは、何を表しているのかわかりにくいです。

よい例です。

C#
bool isLoggedIn = true;
bool hasError = false;
bool canEdit = true;
bool isValid = false;

ishascanなどから始めると、bool型であることがわかりやすくなります。

C#
if (canEdit)
{
Console.WriteLine("編集できます");
}

このように、条件文として読んだときに自然な名前にすると、コードの可読性が上がります。

8. bool型の実践的な使い方

ここからは、C#のbool型を実際のプログラムでどのように使うのかを見ていきます。

bool型は、状態管理、ログイン判定、入力チェック、メソッドの戻り値など、さまざまな場面で使われます。

8-1. フラグとして状態を管理する

bool型は、状態を管理するフラグとしてよく使われます。

C#
bool isRunning = true;

if (isRunning)
{
Console.WriteLine("処理中です");
}

フラグとは、ある状態がオンかオフかを表す目印のようなものです。

たとえば、ゲームでプレイヤーが生きているかどうかを表すこともできます。

C#
bool isAlive = true;

if (!isAlive)
{
Console.WriteLine("ゲームオーバー");
}

8-2. ログイン済みかどうかを判定する

Webアプリや業務システムでは、ログイン済みかどうかをboolで管理することがあります。

C#
bool isLoggedIn = false;

if (isLoggedIn)
{
Console.WriteLine("マイページを表示します");
}
else
{
Console.WriteLine("ログイン画面を表示します");
}

isLoggedInという変数名にすると、「ログインしているかどうか」が直感的にわかります。

8-3. 入力値が有効かどうかを判定する

ユーザーが入力した値が正しいかどうかを判定する場合にも、bool型を使えます。

C#
string name = "Taro";

bool isValidName = !string.IsNullOrEmpty(name);

if (isValidName)
{
Console.WriteLine("名前が入力されています");
}
else
{
Console.WriteLine("名前を入力してください");
}

string.IsNullOrEmptyは、文字列がnullまたは空文字かどうかを判定するメソッドです。

!を付けることで、「空ではない場合」という意味になります。

8-4. メソッドの戻り値としてbool型を使う

メソッドの戻り値としてbool型を使うと、処理結果をわかりやすく返せます。

C#
bool IsAdult(int age)
{
return age >= 20;
}

このメソッドは、年齢が20歳以上ならtrue、そうでなければfalseを返します。

使い方は次のとおりです。

C#
int age = 22;

if (IsAdult(age))
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("未成年です");
}

判定用のメソッドは、IsHasCanで始める名前にするとわかりやすくなります。

8-5. Try〜パターンで成功・失敗を返す

C#では、処理が成功したかどうかをboolで返すTry〜パターンがよく使われます。

代表的な例がint.TryParseです。

C#
string text = "123";

bool success = int.TryParse(text, out int number);

if (success)
{
Console.WriteLine(number);
}
else
{
Console.WriteLine("数値に変換できません");
}

TryParseは、変換に成功したらtrue、失敗したらfalseを返します。

自分でメソッドを作るときも、成功・失敗をboolで返す形にできます。

C#
bool TryLogin(string userName, string password)
{
return userName == "admin" && password == "pass";
}

このように、処理結果をtrueまたはfalseで返すと、呼び出し側で条件分岐しやすくなります。

9. bool型を使ったサンプルコード

ここでは、C#のbool型を使った具体的なサンプルコードを紹介します。

基本的な判定、入力チェック、複数条件、文字列変換、bool?の使い方を順番に見ていきましょう。

9-1. 年齢によって成人かどうかを判定する例

年齢が20歳以上なら成人、そうでなければ未成年と判定する例です。

C#
int age = 20;

bool isAdult = age >= 20;

if (isAdult)
{
Console.WriteLine("成人です");
}
else
{
Console.WriteLine("未成年です");
}

age >= 20の結果がbool型になり、isAdultに代入されます。

9-2. 入力チェックの例

名前が入力されているかどうかを確認する例です。

C#
string name = "";

bool isValid = !string.IsNullOrEmpty(name);

if (isValid)
{
Console.WriteLine("入力OKです");
}
else
{
Console.WriteLine("名前を入力してください");
}

string.IsNullOrEmpty(name)は、nameが空ならtrueになります。

ここでは!で反転しているため、名前が入力されていればisValidtrueになります。

9-3. 複数条件を組み合わせた例

年齢と会員状態を組み合わせて、サービスを利用できるかどうかを判定する例です。

C#
int age = 25;
bool isMember = true;

bool canUseService = age >= 18 && isMember;

if (canUseService)
{
Console.WriteLine("サービスを利用できます");
}
else
{
Console.WriteLine("サービスを利用できません");
}

この例では、「18歳以上」かつ「会員である」場合にだけcanUseServicetrueになります。

9-4. 文字列をbool型に変換する例

文字列"true"bool型に変換する例です。

C#
string text = "true";

if (bool.TryParse(text, out bool result))
{
Console.WriteLine("変換できました");
Console.WriteLine(result);
}
else
{
Console.WriteLine("変換できませんでした");
}

bool.TryParseを使うことで、変換に失敗してもプログラムが止まりにくくなります。

"true""false"のような文字列を扱うときに便利です。

9-5. bool?を使って未設定状態を表す例

bool?を使って、承認状態を表す例です。

C#
bool? isApproved = null;

if (isApproved == true)
{
Console.WriteLine("承認済みです");
}
else if (isApproved == false)
{
Console.WriteLine("却下されています");
}
else
{
Console.WriteLine("まだ確認されていません");
}

bool?を使うことで、truefalseだけでなく、nullによる「未確認」の状態も表現できます。

10. C#のbool型に関するよくある質問

ここでは、C#のbool型について初心者が疑問に感じやすい内容をまとめます。

10-1. bool型の初期値は何ですか?

bool型の既定値はfalseです。

C#
Console.WriteLine(default(bool)); // False

クラスのフィールドとして宣言した場合も、初期値はfalseになります。

C#
class Sample
{
public bool IsActive; // 初期値はfalse
}

ただし、メソッド内のローカル変数は、代入する前に使えません。

C#
void Test()
{
bool isActive;

// Console.WriteLine(isActive); // エラー
}

ローカル変数では、必ず値を代入してから使いましょう。

10-2. boolとBooleanはどちらを使うべきですか?

通常のC#コードでは、boolを使うのが一般的です。

C#
bool isActive = true;

BooleanSystem.Booleanの型名です。

C#
System.Boolean isActive = true;

boolSystem.Booleanの別名なので、意味は同じです。特別な理由がなければ、C#ではboolを使えば問題ありません。

10-3. C#で0や1をtrue/falseとして使えますか?

C#では、01をそのままtruefalseとして扱うことはできません。

C#
// bool flag = 1; // エラー
// bool flag = 0; // エラー

数値をもとにbool値を作りたい場合は、比較式を使います。

C#
int value = 1;

bool flag = value == 1;

また、Convert.ToBooleanを使う方法もあります。

C#
bool flag = Convert.ToBoolean(1);

ただし、コードの読みやすさを考えると、比較式で明示する方法がおすすめです。

10-4. bool型を反転するにはどうすればいいですか?

bool型を反転するには、!演算子を使います。

C#
bool isActive = true;

bool result = !isActive;

Console.WriteLine(result); // False

条件分岐でもよく使います。

C#
bool isLoggedIn = false;

if (!isLoggedIn)
{
Console.WriteLine("ログインしてください");
}

!isLoggedInは、「ログインしていない場合」という意味です。

10-5. bool型を文字列に変換するにはどうすればいいですか?

bool型を文字列に変換するには、ToStringを使います。

C#
bool isActive = true;

string text = isActive.ToString();

Console.WriteLine(text); // True

falseの場合は、"False"という文字列になります。

C#
bool isActive = false;

string text = isActive.ToString();

Console.WriteLine(text); // False

表示用の文字列として使いたい場合に便利です。

10-6. bool?とboolの違いは何ですか?

boolは、trueまたはfalseのどちらかだけを持てる型です。

C#
bool flag = true;

一方、bool?は、truefalsenullを扱えます。

C#
bool? flag = null;

nullを扱えるため、「未設定」「不明」「未回答」のような状態を表すことができます。

ただし、bool?はそのままif文の条件には使えません。

C#
bool? flag = true;

// if (flag) // エラー
// {
// }

次のように、trueかどうかを明示して判定します。

C#
if (flag == true)
{
Console.WriteLine("trueです");
}

まとめ

C#のbool型は、trueまたはfalseで真偽を表すための基本的なデータ型です。

条件分岐、比較演算子、論理演算子、フラグ管理、入力チェック、メソッドの戻り値など、C#プログラミングのさまざまな場面で使われます。

基本的な使い方は次のとおりです。

C#
bool isActive = true;

if (isActive)
{
Console.WriteLine("有効です");
}

比較演算子を使うと、結果としてbool値を作れます。

C#
int age = 20;
bool isAdult = age >= 20;

文字列から変換する場合は、bool.Parsebool.TryParseを使います。

C#
bool.TryParse("true", out bool result);

また、bool?を使うと、truefalseに加えてnullも扱えます。

C#
bool? isApproved = null;

初心者のうちは、bool型に数値を直接代入できないこと、if文の条件式にはbool型が必要なこと、truefalseは小文字で書くことに注意しましょう。

bool型を正しく使えるようになると、条件分岐や判定処理がわかりやすく書けるようになります。C#の基本として、truefalseif文、比較演算子、論理演算子をセットで理解しておきましょう。