Share via


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

更新 : 2007 年 11 月

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

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# プログラミング ガイド

参照

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

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