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#におけるtrueとfalseは、次の意味を持ちます。
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#にはboolとBooleanがありますが、基本的には同じものです。
boolはC#のキーワードで、System.Booleanの別名です。
C#bool flag1 = true;
Boolean flag2 = false;
System.Boolean flag3 = true;
上の3つは、どれも真偽値を扱う型です。
通常のC#コードでは、boolを使うのが一般的です。BooleanやSystem.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("表示します");
}
この例では、isVisibleがtrueなので、if文の中の処理が実行されます。
2-3. falseを代入する例
falseを代入すると、その変数は「偽」の状態になります。
C#bool isVisible = false;
if (isVisible)
{
Console.WriteLine("表示します");
}
この例では、isVisibleがfalseなので、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#コンパイラがisActiveをbool型だと判断します。
次のように比較式の結果を代入する場合も、型は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("ログインしています");
}
isLoggedInがtrueなので、メッセージが表示されます。
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("ログインしてください");
}
この例では、isLoggedInがfalseなので、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型の値は、直接trueやfalseを代入するだけでなく、比較演算子や論理演算子によって作ることもできます。
たとえば、数値を比較した結果は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
successがfalseなら、変換に失敗したと判断できます。
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#では、0や1を直接bool型として扱うことはできません。
C#// bool flag = 1; // エラー
// bool flag = 0; // エラー
CやC++などでは、0をfalse、1をtrueのように扱う場合がありますが、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?は、true、falseに加えて、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型は、必ずtrueかfalseのどちらかです。
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
nullをfalseとして扱いたい場合や、初期値を決めて処理したい場合に便利です。
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型に0や1を直接代入することはできません。
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#では、大文字小文字が区別されます。
trueとfalseはすべて小文字で書きます。
C#bool flag1 = true;
bool flag2 = false;
次のように書くとエラーになります。
C#// bool flag = True; // エラー
// bool flag = False; // エラー
一方、Console.WriteLineで表示した場合は、TrueやFalseのように先頭が大文字で表示されます。
C#bool flag = true;
Console.WriteLine(flag); // True
コードで書くときはtrue、false、表示される文字列はTrue、Falseと覚えておくとよいでしょう。
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;
is、has、canなどから始めると、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("未成年です");
}
判定用のメソッドは、IsやHas、Canで始める名前にするとわかりやすくなります。
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になります。
ここでは!で反転しているため、名前が入力されていればisValidはtrueになります。
9-3. 複数条件を組み合わせた例
年齢と会員状態を組み合わせて、サービスを利用できるかどうかを判定する例です。
C#int age = 25;
bool isMember = true;
bool canUseService = age >= 18 && isMember;
if (canUseService)
{
Console.WriteLine("サービスを利用できます");
}
else
{
Console.WriteLine("サービスを利用できません");
}
この例では、「18歳以上」かつ「会員である」場合にだけcanUseServiceがtrueになります。
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?を使うことで、trueとfalseだけでなく、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;
BooleanはSystem.Booleanの型名です。
C#System.Boolean isActive = true;
boolはSystem.Booleanの別名なので、意味は同じです。特別な理由がなければ、C#ではboolを使えば問題ありません。
10-3. C#で0や1をtrue/falseとして使えますか?
C#では、0や1をそのままtrueやfalseとして扱うことはできません。
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?は、true、false、nullを扱えます。
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.Parseやbool.TryParseを使います。
C#bool.TryParse("true", out bool result);
また、bool?を使うと、trueとfalseに加えてnullも扱えます。
C#bool? isApproved = null;
初心者のうちは、bool型に数値を直接代入できないこと、if文の条件式にはbool型が必要なこと、trueとfalseは小文字で書くことに注意しましょう。
bool型を正しく使えるようになると、条件分岐や判定処理がわかりやすく書けるようになります。C#の基本として、true、false、if文、比較演算子、論理演算子をセットで理解しておきましょう。

