次の方法で共有


方法: bool? から bool に安全にキャストする (C# プログラミング ガイド)

Null 許容 bool? 型は、true、false、null の 3 つの異なる値を格納できます。 そのため、bool? 型は、if、for、while などの条件文で使用できません。 たとえば、次のコードはコンパイラ エラーになります。

bool? b = null;
if (b) // Error CS0266.
{
}

コンパイルできないのは、条件文のコンテキストで null の意味があいまいだからです。 条件付きステートメントで bool? を使用するにはまず、その HasValue プロパティをチェックしてその値が null でないことを確認します。次に、bool にキャストします。 詳細については、「bool」を参照してください。 bool? でキャストを実行するときに値が null になっていると、条件テストで InvalidOperationException がスローされます。 次の例は、bool? から bool に安全にキャストするための 1 つの方法を示しています。

使用例

bool? test = null;
// Other code that may or may not
// give a value to test.
if(!test.HasValue) //check for a value
{
    // Assume that IsInitialized
    // returns either true or false.
    test = IsInitialized();
}
if((bool)test) //now this cast is safe
{
   // Do something.
}

参照

関連項目

リテラル キーワード (C# リファレンス)

null 許容型 (C# プログラミング ガイド)

?? 演算子 (C# リファレンス)

概念

C# プログラミング ガイド