C#のboolとBooleanの違いとは?初心者が迷う使い分け・初期値・判定方法をやさしく解説

はじめに

C#を学び始めると、boolBooleanという似た言葉に出会います。

boolBooleanは違う型なの?」
「どちらを使えばいいの?」
booleanと書いたらエラーになるのはなぜ?」
「初期値はtruefalse?」
nullは入れられる?」

このように、C#初心者が迷いやすいポイントは意外と多くあります。

結論からいうと、C#のboolBooleanは基本的に同じ型を表しています。通常のコードではboolを使えば問題ありません。

この記事では、C#のboolBooleanの違い、使い分け、初期値、nullの扱い、判定方法、実践的な使い方まで、初心者にもわかりやすく解説します。

1. C#のboolとBooleanの違いを最初に結論で解説

1-1. boolとBooleanは基本的に同じ型を指す

C#におけるboolBooleanは、どちらも真偽値を扱うための型です。

真偽値とは、次の2つの値のことです。

C#
true
false

たとえば、次の2つの変数宣言は、どちらも真偽値を扱う変数を作っています。

C#
bool isActive = true;
Boolean isEnabled = false;

見た目は違いますが、C#ではどちらも同じ意味として扱われます。

1-2. boolはSystem.Booleanのエイリアス

boolは、System.Booleanのエイリアスです。

エイリアスとは、別名のことです。つまり、C#ではSystem.Booleanという型に対して、短く書ける名前としてboolが用意されています。

次の3つは、意味としては同じです。

C#
bool value1 = true;
Boolean value2 = true;
System.Boolean value3 = true;

Booleanを使う場合、本来はSystem.Booleanという.NETの型を指しています。

C#
System.Boolean isChecked = true;

ただし、通常はusing System;があるため、Booleanと短く書けます。

C#
using System;

Boolean isChecked = true;

1-3. 初心者は通常boolを使えば問題ない

C#のコードでは、基本的にboolを使うのが一般的です。

C#
bool isLogin = true;
bool hasError = false;
bool canSave = true;

Booleanを使っても動作しますが、C#の標準的な書き方としてはboolがよく使われます。

特別な理由がなければ、初心者はまずboolを使うと覚えておけば大丈夫です。

1-4. boolとBooleanの違いを表で比較

比較項目boolBoolean
正体System.Booleanのエイリアス.NETのSystem.Boolean
扱える値trueまたはfalsetrueまたはfalse
よく使われる場面通常のC#コード.NETの型名を明示したい場面
初心者へのおすすめ基本はこちら必要に応じて理解すればよい
性能差なしなし
bool flag = true;Boolean flag = true;

大切なのは、boolBooleanの機能的な違いを気にしすぎる必要はないということです。

C#では、boolSystem.Booleanの別名なので、通常はboolを使えば十分です。

2. C#のboolとは何か

2-1. boolはtrueまたはfalseを扱うデータ型

boolは、trueまたはfalseのどちらかを扱うデータ型です。

C#
bool isFinished = true;
bool hasError = false;

trueは「真」、falseは「偽」を表します。

たとえば、次のような状態を表すときに使います。

C#
bool isLogin = true;      // ログインしている
bool isDeleted = false; // 削除されていない
bool hasPermission = true; // 権限がある

boolは、「はい」か「いいえ」で答えられる状態を表すのに向いています。

2-2. 条件分岐や判定処理で使われる

boolは、if文などの条件分岐でよく使われます。

C#
bool isLogin = true;

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

このコードでは、isLogintrueの場合にだけ、if文の中が実行されます。

反対に、falseの場合は実行されません。

C#
bool isLogin = false;

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

この場合、isLoginfalseなので、メッセージは表示されません。

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

bool型の基本的な書き方は次のとおりです。

C#
bool 変数名 = trueまたはfalse;

具体例は次のようになります。

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

あとから値を変更することもできます。

C#
bool isActive = false;

isActive = true;

変数名には、状態がわかる名前を付けると読みやすくなります。

C#
bool isVisible = true;
bool canEdit = false;
bool hasData = true;

2-4. bool変数に代入できる値

bool変数に代入できる値は、基本的にtrueまたはfalseだけです。

C#
bool result = true;
bool error = false;

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

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

これは、C#が型の安全性を重視しているためです。

C言語などでは、0を偽、0以外を真として扱うことがありますが、C#ではboolと数値は明確に区別されます。

正しく書くなら、次のようにします。

C#
bool flag = true;

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

C#
int count = 1;

bool hasItems = count > 0;

この場合、count > 0の結果がtrueまたはfalseになるため、bool変数に代入できます。

3. C#のBooleanとは何か

3-1. BooleanはSystem.Boolean構造体の名前

Booleanは、.NETで定義されているSystem.Boolean構造体の名前です。

C#
System.Boolean isSuccess = true;

C#では、System.Booleanを短く書くためにboolというキーワードが用意されています。

C#
bool isSuccess = true;

つまり、Booleanは.NET側の型名、boolはC#側で用意されたキーワードと考えると理解しやすいです。

3-2. boolとBooleanが同じ意味になる理由

C#では、いくつかの組み込み型に対して、短く書けるキーワードが用意されています。

たとえば、次のような関係があります。

C#のキーワード.NETの型
boolSystem.Boolean
intSystem.Int32
stringSystem.String
objectSystem.Object
doubleSystem.Double
decimalSystem.Decimal

このように、boolSystem.Booleanに対応しています。

そのため、次の2つは同じ型として扱われます。

C#
bool value1 = true;
Boolean value2 = true;

3-3. Booleanを使うケースはあるのか

通常のC#コードではboolを使うことが多いですが、Booleanを使うケースもあります。

たとえば、.NETの型名を強調したい説明や、リフレクション、型情報を扱う場面などです。

C#
Type type = typeof(Boolean);
Console.WriteLine(type.FullName);

このコードでは、Booleanという.NETの型名を意識して使っています。

ただし、通常の変数宣言や条件判定では、次のようにboolを使うのが自然です。

C#
bool isValid = true;

3-4. .NETの型としてのBooleanを理解する

Booleanは、trueまたはfalseを表す.NETの値型です。

値型とは、変数そのものが値を持つ型のことです。intdoubleなども値型です。

C#
Boolean flag = true;

また、Booleanには便利なメンバーも用意されています。

C#
Console.WriteLine(Boolean.TrueString);
Console.WriteLine(Boolean.FalseString);

出力は次のようになります。

C#
True
False

ただし、日常的なC#プログラミングでは、Booleanのメンバーを直接使う場面はあまり多くありません。

4. boolとBooleanの使い分け

4-1. 通常のコードではboolを使うのが一般的

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

C#
bool isEnabled = true;
bool hasError = false;
bool canSubmit = true;

boolは短く、C#らしい書き方です。

また、intstringと同じように、C#のキーワードとして自然に使えます。

C#
int count = 10;
string name = "Taro";
bool isActive = true;

初心者のうちは、Booleanよりもboolを使うと覚えておけば問題ありません。

4-2. 型名を明示したい場面ではBooleanを使うこともある

Booleanを使うことが完全に間違いというわけではありません。

たとえば、.NETの型名として表現したい場合にはBooleanを使うことがあります。

C#
Console.WriteLine(typeof(Boolean));

また、技術資料や型一覧の説明では、System.Booleanという名前が使われることもあります。

C#
System.Boolean flag = true;

ただし、実際のアプリケーションコードでは、特別な理由がなければboolで十分です。

4-3. コーディング規約に合わせるのが重要

実務では、boolを使うかBooleanを使うかよりも、チームやプロジェクトのコーディング規約に合わせることが大切です。

あるプロジェクトでboolを使うルールになっているなら、boolで統一します。

C#
bool isCompleted = true;

一方で、何らかの理由で.NETの型名を使う方針なら、Booleanを使うこともあります。

C#
Boolean isCompleted = true;

同じプロジェクト内で書き方がバラバラになると、コードの見た目に統一感がなくなります。

そのため、個人の好みよりも、プロジェクトのルールに合わせることが大切です。

4-4. intとInt32、stringとStringとの関係もあわせて理解する

boolBooleanの関係は、intInt32stringStringの関係とよく似ています。

C#
int number1 = 10;
Int32 number2 = 10;

string text1 = "Hello";
String text2 = "Hello";

bool flag1 = true;
Boolean flag2 = true;

それぞれ、C#のキーワードと.NETの型名の関係になっています。

C#でよく使う書き方.NETの型名
intSystem.Int32
stringSystem.String
boolSystem.Boolean

C#のコードでは、一般的にintstringboolのようなキーワードを使うことが多いです。

5. bool型の初期値とnullの扱い

5-1. boolの初期値はfalse

bool型の初期値はfalseです。

ただし、どこで宣言するかによって、初期化が自動で行われるかどうかが変わります。

たとえば、クラスのフィールドとして宣言したboolは、自動的にfalseになります。

C#
class User
{
public bool IsActive;
}

この場合、IsActiveには初期値としてfalseが入ります。

C#
User user = new User();

Console.WriteLine(user.IsActive); // False

5-2. ローカル変数のboolは初期化が必要

メソッドの中で宣言したローカル変数は、自動的には使える状態になりません。

C#
void Sample()
{
bool isActive;

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

このコードはエラーになります。

ローカル変数は、使う前に必ず値を代入する必要があります。

C#
void Sample()
{
bool isActive = false;

Console.WriteLine(isActive);
}

初心者がよく混乱するポイントですが、boolの初期値はfalseであっても、ローカル変数では明示的な初期化が必要です。

5-3. フィールドや配列のboolは自動的にfalseになる

クラスのフィールドや配列の要素は、自動的に初期化されます。

C#
class Sample
{
public bool IsChecked;
}

この場合、IsCheckedfalseになります。

配列の場合も同じです。

C#
bool[] flags = new bool[3];

Console.WriteLine(flags[0]); // False
Console.WriteLine(flags[1]); // False
Console.WriteLine(flags[2]); // False

bool配列を作成すると、各要素は自動的にfalseで初期化されます。

5-4. boolにnullは入れられない

通常のboolにはnullを入れられません。

C#
bool isActive = null; // エラー

boolは値型なので、通常は必ずtrueまたはfalseのどちらかになります。

つまり、通常のboolでは「値がない」という状態を表せません。

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

このように、boolは基本的に2択の値を扱う型です。

5-5. nullを扱いたい場合はbool?を使う

truefalseに加えて、nullも扱いたい場合はbool?を使います。

C#
bool? isChecked = null;

bool?は、nullable boolとも呼ばれます。

次の3つの状態を表せます。

C#
bool? value1 = true;
bool? value2 = false;
bool? value3 = null;

たとえば、アンケートの回答で「はい」「いいえ」「未回答」を表したい場合などに使えます。

C#
bool? answer = null;

ただし、bool?を使う場合は、nullの可能性を考えて判定する必要があります。

C#
bool? isChecked = null;

if (isChecked == true)
{
Console.WriteLine("チェックされています");
}
else if (isChecked == false)
{
Console.WriteLine("チェックされていません");
}
else
{
Console.WriteLine("未設定です");
}

6. boolの判定方法とよく使う書き方

6-1. if文でboolを判定する基本形

boolは、if文でそのまま判定できます。

C#
bool isLogin = true;

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

isLogintrueの場合、if文の中が実行されます。

これは次のように書くこともできます。

C#
if (isLogin == true)
{
Console.WriteLine("ログインしています");
}

ただし、通常は== trueを書かず、if (isLogin)と書くことが多いです。

6-2. trueかどうかを判定する書き方

booltrueかどうかを判定する場合は、次のように書きます。

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

この書き方は、isActive == trueと同じ意味です。

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

ただし、bool変数自体がすでに条件として使えるため、シンプルに書くなら次の形がおすすめです。

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

6-3. falseかどうかを判定する書き方

boolfalseかどうかを判定する場合は、!を使います。

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

!は否定を表す演算子です。

つまり、!isActiveは「isActiveではない」という意味になります。

次のコードと同じ意味です。

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

一般的には、短く書ける!isActiveがよく使われます。

6-4. == trueや== falseは書くべきか

通常のboolでは、== true== falseは省略して書くことが多いです。

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

ただし、初心者向けの学習段階では、== true== falseを書いたほうが意味を理解しやすい場合もあります。

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

実務では、読みやすさを優先します。

変数名がわかりやすければ、== trueを書かないほうが自然です。

C#
if (hasPermission)
{
Console.WriteLine("権限があります");
}

一方で、bool?の場合は注意が必要です。

C#
bool? isChecked = null;

if (isChecked == true)
{
Console.WriteLine("チェックされています");
}

bool?では、truefalsenullの3状態があるため、== trueのように明示したほうがわかりやすい場面があります。

6-5. 論理演算子&&、||、!との組み合わせ

boolは、論理演算子と組み合わせて使うことが多いです。

&&は「かつ」を表します。

C#
bool isLogin = true;
bool isAdmin = true;

if (isLogin && isAdmin)
{
Console.WriteLine("管理者としてログインしています");
}

この場合、isLoginisAdminの両方がtrueのときだけ実行されます。

||は「または」を表します。

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

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

この場合、どちらか一方がtrueなら実行されます。

!は否定です。

C#
bool hasError = false;

if (!hasError)
{
Console.WriteLine("エラーはありません");
}

boolは、条件を組み合わせることで複雑な判定を表現できます。

7. boolとBooleanで初心者が迷いやすいポイント

7-1. boolとbooleanは同じものなのか

C#では、boolBooleanは同じ型を表しますが、booleanは使えません。

C#
bool flag = true;      // 正しい
Boolean flag2 = true; // 正しい
boolean flag3 = true; // エラー

booleanはC#のキーワードではありません。

そのため、C#で真偽値を扱うときは、boolを使います。

7-2. C#ではbooleanではなくboolを使う

C#では、Javaのようにbooleanとは書きません。

正しい書き方は次のとおりです。

C#
bool isActive = true;

間違った書き方は次のとおりです。

C#
boolean isActive = true; // エラー

C#初心者がJavaやJavaScriptなどの経験を持っている場合、ついbooleanと書いてしまうことがあります。

C#ではboolと覚えておきましょう。

7-3. Javaのbooleanとの違い

Javaでは、真偽値を扱う型としてbooleanを使います。

Java
boolean isActive = true;

一方、C#ではboolを使います。

C#
bool isActive = true;

どちらもtrueまたはfalseを扱う点は似ていますが、型名が違います。

また、C#にはSystem.Booleanという.NETの型名があり、そのエイリアスとしてboolが使われます。

Java経験者は、C#ではbooleanではなくboolと書く点に注意しましょう。

7-4. 大文字小文字を間違えたときのエラー

C#は大文字と小文字を区別します。

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

C#
Bool flag = true;    // エラー
BOOLEAN flag = true; // エラー
boolean flag = true; // エラー

正しい書き方は次のいずれかです。

C#
bool flag = true;
Boolean flag2 = true;
System.Boolean flag3 = true;

また、truefalseも小文字で書きます。

C#
bool flag = true;  // 正しい
bool flag2 = false; // 正しい

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

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

C#では、型名やキーワードの大文字小文字に注意しましょう。

7-5. Booleanとboolを混在させても動くのか

boolBooleanは同じ型を表すため、混在させても動きます。

C#
bool value1 = true;
Boolean value2 = value1;

Console.WriteLine(value2);

このコードは問題なく動作します。

メソッドの引数でも同じです。

C#
void PrintResult(Boolean result)
{
Console.WriteLine(result);
}

bool isSuccess = true;
PrintResult(isSuccess);

boolBooleanは同じ型なので、引数として渡すこともできます。

ただし、コードの統一感を考えると、通常はboolBooleanのどちらかにそろえるのがおすすめです。

C#では基本的にboolで統一するとよいでしょう。

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

8-1. フラグ変数として使う

boolは、フラグ変数としてよく使われます。

フラグ変数とは、ある状態がオンかオフかを表す変数です。

C#
bool isRunning = true;

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

たとえば、次のような状態を表せます。

C#
bool isLogin = true;
bool isDeleted = false;
bool isVisible = true;
bool hasError = false;

フラグ変数は便利ですが、増えすぎると状態管理が複雑になることがあります。

そのため、本当にtruefalseだけで表せる状態かを考えて使うことが大切です。

8-2. メソッドの戻り値として使う

boolは、メソッドの戻り値としてもよく使われます。

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

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

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

C#
bool result = IsAdult(20);

if (result)
{
Console.WriteLine("成人です");
}

メソッド名をIsAdultのようにすると、戻り値がboolであることがわかりやすくなります。

8-3. 入力チェックやバリデーションで使う

boolは、入力チェックやバリデーションでもよく使われます。

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

このメソッドは、名前が空でなければtrueを返します。

C#
string name = "Taro";

if (IsValidName(name))
{
Console.WriteLine("有効な名前です");
}
else
{
Console.WriteLine("名前を入力してください");
}

バリデーションでは、条件をboolで表すと処理がわかりやすくなります。

C#
bool hasName = !string.IsNullOrEmpty(name);
bool isLongEnough = name.Length >= 3;

if (hasName && isLongEnough)
{
Console.WriteLine("入力内容は有効です");
}

8-4. TryParseの戻り値で使う

C#では、TryParse系のメソッドがboolを返します。

たとえば、文字列を数値に変換する場合です。

C#
string text = "123";

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

if (success)
{
Console.WriteLine($"変換できました: {number}");
}
else
{
Console.WriteLine("変換できませんでした");
}

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

このように、処理が成功したかどうかを表すためにboolがよく使われます。

より短く書くこともできます。

C#
if (int.TryParse(text, out int number))
{
Console.WriteLine(number);
}

この書き方では、TryParseの戻り値であるboolをそのままif文の条件に使っています。

8-5. 条件をわかりやすくする変数名の付け方

bool変数は、名前の付け方がとても重要です。

たとえば、次のような名前は意味が伝わりやすいです。

C#
bool isLogin = true;
bool hasError = false;
bool canEdit = true;
bool shouldSave = false;

よく使われる接頭語には、次のようなものがあります。

接頭語意味
is状態を表すisActive
has持っているかを表すhasError
can可能かを表すcanSave
shouldすべきかを表すshouldUpdate

良い変数名にすると、if文が自然な文章のように読めます。

C#
if (canSave)
{
Save();
}

このコードは、「保存できるなら保存する」と読めます。

9. boolを使うときの注意点

9-1. bool変数名は意味が伝わる名前にする

bool変数には、flagcheckのような曖昧な名前を付けるより、意味が伝わる名前を付けるのがおすすめです。

よくない例です。

C#
bool flag = true;

if (flag)
{
Console.WriteLine("処理します");
}

このコードでは、flagが何を意味しているのかわかりにくいです。

よい例です。

C#
bool hasPermission = true;

if (hasPermission)
{
Console.WriteLine("処理します");
}

hasPermissionであれば、「権限があるかどうか」を表していることがわかります。

9-2. 二重否定の変数名は避ける

bool変数では、二重否定になる名前を避けると読みやすくなります。

たとえば、次のような名前は少し読みにくいです。

C#
bool isNotDisabled = true;

この変数をif文で否定すると、さらにわかりにくくなります。

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

否定の否定になってしまい、意味を理解するのに時間がかかります。

できるだけ肯定形の名前にしましょう。

C#
bool isEnabled = true;

if (!isEnabled)
{
Console.WriteLine("無効です");
}

このほうが読みやすく、ミスも減らせます。

9-3. nullable boolは判定漏れに注意する

bool?は、truefalsenullの3つの状態を持てます。

C#
bool? isChecked = null;

便利ですが、nullの判定漏れに注意が必要です。

C#
if (isChecked == true)
{
Console.WriteLine("チェックされています");
}
else
{
Console.WriteLine("チェックされていません");
}

このコードでは、falseの場合もnullの場合も同じ扱いになります。

それで問題ない場合もありますが、nullを「未設定」として扱いたい場合は、明示的に分ける必要があります。

C#
if (isChecked == true)
{
Console.WriteLine("チェックされています");
}
else if (isChecked == false)
{
Console.WriteLine("チェックされていません");
}
else
{
Console.WriteLine("未設定です");
}

bool?を使うときは、nullが何を意味するのかを明確にしましょう。

9-4. trueとfalseだけでは表現しきれない状態もある

boolは2つの状態を表すには便利ですが、すべての状態を表せるわけではありません。

たとえば、注文状態を考えてみます。

C#
bool isCompleted = false;

この変数だけでは、次のような状態を区別できません。

  • 未処理

  • 処理中

  • 完了

  • キャンセル

  • エラー

truefalseだけでは、複数の状態を表すには不十分です。

このような場合に無理にboolを増やすと、コードが複雑になります。

C#
bool isProcessing = true;
bool isCompleted = false;
bool isCanceled = false;
bool hasError = false;

状態が増える場合は、enumを使ったほうがわかりやすいことがあります。

9-5. enumを使ったほうがよいケース

複数の状態を表したい場合は、boolではなくenumを使うと読みやすくなります。

C#
enum OrderStatus
{
Pending,
Processing,
Completed,
Canceled
}

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

C#
OrderStatus status = OrderStatus.Processing;

if (status == OrderStatus.Processing)
{
Console.WriteLine("処理中です");
}

boolは「はい」か「いいえ」で表せる状態に向いています。

一方で、3つ以上の状態がある場合は、enumを検討しましょう。

C#
bool isCompleted = true;

このような単純な状態ならboolで十分です。

C#
OrderStatus status = OrderStatus.Completed;

複数の状態を明確に扱いたいなら、enumのほうが適しています。

10. boolとBooleanに関するよくある質問

10-1. boolとBooleanは性能に違いがある?

boolBooleanに性能差はありません。

boolSystem.Booleanのエイリアスなので、実体としては同じ型です。

C#
bool value1 = true;
Boolean value2 = true;

どちらを使っても、実行時の性能が変わるわけではありません。

性能ではなく、読みやすさやコーディング規約を基準に選びましょう。

通常のC#コードではboolを使うのがおすすめです。

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

基本的にはboolを使えば問題ありません。

C#
bool isActive = true;

boolはC#で一般的に使われる書き方です。

Booleanを使っても間違いではありませんが、通常の変数宣言ではboolのほうが自然です。

C#
Boolean isActive = true;

プロジェクトでルールが決まっている場合は、そのルールに合わせましょう。

特にルールがない場合は、boolを選ぶとよいでしょう。

10-3. boolの初期値はなぜfalseなの?

boolの既定値はfalseです。

C#では、値型には既定値があります。

たとえば、intの既定値は0boolの既定値はfalseです。

C#
class Sample
{
public bool Flag;
public int Count;
}

この場合、FlagfalseCount0になります。

C#
Sample sample = new Sample();

Console.WriteLine(sample.Flag); // False
Console.WriteLine(sample.Count); // 0

ただし、メソッド内のローカル変数は、使用前に明示的な初期化が必要です。

C#
bool flag = false;

10-4. boolに0や1は代入できる?

C#では、bool01を直接代入することはできません。

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

C#のboolは、数値とは別の型です。

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

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

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

C#
int count = 1;

bool hasItems = count > 0;

この場合、count > 0の結果がtrueまたはfalseになります。

10-5. bool?とboolの違いは?

boolは、trueまたはfalseの2つの値を扱います。

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

一方、bool?は、truefalsenullの3つの値を扱えます。

C#
bool? isChecked = null;

違いを表にすると次のようになります。

扱える値用途
booltruefalse通常の真偽値
bool?truefalsenull未設定や不明を表したい場合

たとえば、設定がオンかオフかだけを表すならboolで十分です。

C#
bool isEnabled = true;

未設定の状態も表したいならbool?を使います。

C#
bool? isEnabled = null;

10-6. Boolean.TrueStringやFalseStringとは?

Boolean.TrueStringBoolean.FalseStringは、truefalseを文字列として表すための値です。

C#
Console.WriteLine(Boolean.TrueString);
Console.WriteLine(Boolean.FalseString);

出力は次のようになります。

C#
True
False

注意点として、C#のキーワードとしてのtruefalseは小文字です。

C#
bool flag = true;

一方、文字列としてのBoolean.TrueString"True"Boolean.FalseString"False"です。

C#
string trueText = Boolean.TrueString;   // "True"
string falseText = Boolean.FalseString; // "False"

文字列に変換したときの表記と、コード上で使うtruefalseの表記は区別して理解しましょう。

まとめ

C#のboolBooleanは、基本的に同じ型を表します。

boolSystem.Booleanのエイリアスであり、どちらもtrueまたはfalseを扱うための型です。

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

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

Booleanを使っても間違いではありませんが、特別な理由がなければboolを使えば問題ありません。

また、C#ではbooleanとは書きません。

C#
boolean flag = true; // エラー

正しくは次のように書きます。

C#
bool flag = true;

boolの初期値はfalseですが、ローカル変数は使用前に初期化が必要です。

C#
bool flag = false;

通常のboolにはnullを入れられません。nullを扱いたい場合はbool?を使います。

C#
bool? flag = null;

boolは、条件分岐、フラグ変数、メソッドの戻り値、入力チェック、TryParseなど、C#プログラミングのさまざまな場面で使われます。

大切なのは、truefalseだけで表せる状態に使うこと、そして変数名をわかりやすくすることです。

C#
bool hasPermission = true;

if (hasPermission)
{
Console.WriteLine("実行できます");
}

初心者のうちは、まず「C#では真偽値にboolを使う」「boolBooleanは基本的に同じ」「通常はboolを使えばよい」と覚えておきましょう。