0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なにもわからないAdvent Calendar 2024

Day 9

ifでbool?を入れるときは3値の可能性があり、nullの扱いに注意

Last updated at Posted at 2024-12-08

はじめに

C#でプログラミングをしていると、bool?型(Nullable型のbool)をif文に渡すケースがあります。この場合、三値論理(true/false/null)を意識しないと、予期せぬ挙動やバグにつながる可能性があります。本記事では、bool?をif文で使用する際の注意点と、その適切な扱い方について解説します。

bool?が取る値

bool?は、Nullableの糖衣構文で、true、false、nullの3つの状態を持つ型です。nullは「値が未設定」や「状態が不明」を表す場合に使用されます。

ifにTrueでもFalseでもなくnullが判定基準の場合は?

C#ではif文の条件文にnullをそのまま入れるとfalseになります。
これは、たとえif文のelse句に入ったからといって、条件文の結果がfalseなのかnullなのか判断できないことになります。

明示的にnullを扱う方法

nullを明確に区別する場合は、nullableBoolを直接if文に渡すのではなく、条件分岐を明示的に記述する必要があります。

nullable.css
bool? nullableBool = null;

if (nullableBool == true)
{
    Console.WriteLine("Condition is true.");
}
else if (nullableBool == false)
{
    Console.WriteLine("Condition is false.");
}
else
{
    Console.WriteLine("Condition is null.");
}

簡潔に書くのであれば、 三項演算子??(null合体演算子)switch文 を使用してもよいでしょう。

終わりに

nullは「値が存在しない状態」または「参照が設定されていない状態」を示すので、メモリ管理の経験が少ないと感覚が掴みにくいですが、if文などの条件文で関係してくる場合は気をつけなくてはいけません。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?