C#のboolとBooleanの違いとは?初心者が迷う使い分け・初期値・判定方法をやさしく解説
はじめに
C#を学び始めると、boolとBooleanという似た言葉に出会います。
「boolとBooleanは違う型なの?」
「どちらを使えばいいの?」
「booleanと書いたらエラーになるのはなぜ?」
「初期値はtrue?false?」
「nullは入れられる?」
このように、C#初心者が迷いやすいポイントは意外と多くあります。
結論からいうと、C#のboolとBooleanは基本的に同じ型を表しています。通常のコードではboolを使えば問題ありません。
この記事では、C#のboolとBooleanの違い、使い分け、初期値、nullの扱い、判定方法、実践的な使い方まで、初心者にもわかりやすく解説します。
1. C#のboolとBooleanの違いを最初に結論で解説
1-1. boolとBooleanは基本的に同じ型を指す
C#におけるboolとBooleanは、どちらも真偽値を扱うための型です。
真偽値とは、次の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の違いを表で比較
| 比較項目 | bool | Boolean |
|---|---|---|
| 正体 | System.Booleanのエイリアス | .NETのSystem.Boolean型 |
| 扱える値 | trueまたはfalse | trueまたはfalse |
| よく使われる場面 | 通常のC#コード | .NETの型名を明示したい場面 |
| 初心者へのおすすめ | 基本はこちら | 必要に応じて理解すればよい |
| 性能差 | なし | なし |
| 例 | bool flag = true; | Boolean flag = true; |
大切なのは、boolとBooleanの機能的な違いを気にしすぎる必要はないということです。
C#では、boolはSystem.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("ログイン済みです");
}
このコードでは、isLoginがtrueの場合にだけ、if文の中が実行されます。
反対に、falseの場合は実行されません。
C#bool isLogin = false;
if (isLogin)
{
Console.WriteLine("ログイン済みです");
}
この場合、isLoginはfalseなので、メッセージは表示されません。
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#では、0や1をboolに代入することはできません。
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の型 |
|---|---|
bool | System.Boolean |
int | System.Int32 |
string | System.String |
object | System.Object |
double | System.Double |
decimal | System.Decimal |
このように、boolはSystem.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の値型です。
値型とは、変数そのものが値を持つ型のことです。intやdoubleなども値型です。
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#らしい書き方です。
また、intやstringと同じように、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との関係もあわせて理解する
boolとBooleanの関係は、intとInt32、stringとStringの関係とよく似ています。
C#int number1 = 10;
Int32 number2 = 10;
string text1 = "Hello";
String text2 = "Hello";
bool flag1 = true;
Boolean flag2 = true;
それぞれ、C#のキーワードと.NETの型名の関係になっています。
| C#でよく使う書き方 | .NETの型名 |
|---|---|
int | System.Int32 |
string | System.String |
bool | System.Boolean |
C#のコードでは、一般的にint、string、boolのようなキーワードを使うことが多いです。
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;
}
この場合、IsCheckedはfalseになります。
配列の場合も同じです。
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?を使う
true、falseに加えて、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("ログインしています");
}
isLoginがtrueの場合、if文の中が実行されます。
これは次のように書くこともできます。
C#if (isLogin == true)
{
Console.WriteLine("ログインしています");
}
ただし、通常は== trueを書かず、if (isLogin)と書くことが多いです。
6-2. trueかどうかを判定する書き方
boolがtrueかどうかを判定する場合は、次のように書きます。
C#if (isActive)
{
Console.WriteLine("有効です");
}
この書き方は、isActive == trueと同じ意味です。
C#if (isActive == true)
{
Console.WriteLine("有効です");
}
ただし、bool変数自体がすでに条件として使えるため、シンプルに書くなら次の形がおすすめです。
C#if (isActive)
{
Console.WriteLine("有効です");
}
6-3. falseかどうかを判定する書き方
boolがfalseかどうかを判定する場合は、!を使います。
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?では、true、false、nullの3状態があるため、== trueのように明示したほうがわかりやすい場面があります。
6-5. 論理演算子&&、||、!との組み合わせ
boolは、論理演算子と組み合わせて使うことが多いです。
&&は「かつ」を表します。
C#bool isLogin = true;
bool isAdmin = true;
if (isLogin && isAdmin)
{
Console.WriteLine("管理者としてログインしています");
}
この場合、isLoginとisAdminの両方が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#では、boolとBooleanは同じ型を表しますが、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を使います。
Javaboolean 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;
また、trueとfalseも小文字で書きます。
C#bool flag = true; // 正しい
bool flag2 = false; // 正しい
次のように書くとエラーになります。
C#bool flag = True; // エラー
bool flag2 = False; // エラー
C#では、型名やキーワードの大文字小文字に注意しましょう。
7-5. Booleanとboolを混在させても動くのか
boolとBooleanは同じ型を表すため、混在させても動きます。
C#bool value1 = true;
Boolean value2 = value1;
Console.WriteLine(value2);
このコードは問題なく動作します。
メソッドの引数でも同じです。
C#void PrintResult(Boolean result)
{
Console.WriteLine(result);
}
bool isSuccess = true;
PrintResult(isSuccess);
boolとBooleanは同じ型なので、引数として渡すこともできます。
ただし、コードの統一感を考えると、通常はboolかBooleanのどちらかにそろえるのがおすすめです。
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;
フラグ変数は便利ですが、増えすぎると状態管理が複雑になることがあります。
そのため、本当にtrueとfalseだけで表せる状態かを考えて使うことが大切です。
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変数には、flagやcheckのような曖昧な名前を付けるより、意味が伝わる名前を付けるのがおすすめです。
よくない例です。
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?は、true、false、nullの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;
この変数だけでは、次のような状態を区別できません。
未処理
処理中
完了
キャンセル
エラー
trueとfalseだけでは、複数の状態を表すには不十分です。
このような場合に無理に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は性能に違いがある?
boolとBooleanに性能差はありません。
boolはSystem.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の既定値は0、boolの既定値はfalseです。
C#class Sample
{
public bool Flag;
public int Count;
}
この場合、Flagはfalse、Countは0になります。
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#では、boolに0や1を直接代入することはできません。
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?は、true、false、nullの3つの値を扱えます。
C#bool? isChecked = null;
違いを表にすると次のようになります。
| 型 | 扱える値 | 用途 |
|---|---|---|
bool | true、false | 通常の真偽値 |
bool? | true、false、null | 未設定や不明を表したい場合 |
たとえば、設定がオンかオフかだけを表すならboolで十分です。
C#bool isEnabled = true;
未設定の状態も表したいならbool?を使います。
C#bool? isEnabled = null;
10-6. Boolean.TrueStringやFalseStringとは?
Boolean.TrueStringとBoolean.FalseStringは、trueとfalseを文字列として表すための値です。
C#Console.WriteLine(Boolean.TrueString);
Console.WriteLine(Boolean.FalseString);
出力は次のようになります。
C#True
False
注意点として、C#のキーワードとしてのtrueとfalseは小文字です。
C#bool flag = true;
一方、文字列としてのBoolean.TrueStringは"True"、Boolean.FalseStringは"False"です。
C#string trueText = Boolean.TrueString; // "True"
string falseText = Boolean.FalseString; // "False"
文字列に変換したときの表記と、コード上で使うtrue、falseの表記は区別して理解しましょう。
まとめ
C#のboolとBooleanは、基本的に同じ型を表します。
boolはSystem.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#プログラミングのさまざまな場面で使われます。
大切なのは、trueとfalseだけで表せる状態に使うこと、そして変数名をわかりやすくすることです。
C#bool hasPermission = true;
if (hasPermission)
{
Console.WriteLine("実行できます");
}
初心者のうちは、まず「C#では真偽値にboolを使う」「boolとBooleanは基本的に同じ」「通常はboolを使えばよい」と覚えておきましょう。

