다음을 통해 공유


방법: bool?에서 bool로 안전하게 캐스팅(C# 프로그래밍 가이드)

bool? nullable 형식에는 true, false 및 null의 세 가지 값이 포함될 수 있습니다. 따라서 bool? 형식은 if, for 또는 while 등이 있는 조건문에서 사용할 수 없습니다. 예를 들어, 다음 코드는 컴파일러 오류를 발생시킵니다.

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

이 코드는 null이 조건문의 컨텍스트에서 무엇을 의미하는지 명확하지 않기 때문에 컴파일되지 않습니다. 조건문에서 bool?를 사용하려면 먼저 해당 HasValue 속성을 검사하여 값이 null이 아닌지 확인한 다음 값을 bool로 캐스팅합니다. 자세한 내용은 bool을 참조하십시오. null 값을 사용하여 bool?에 대한 캐스팅을 수행하면 조건 테스트에서 InvalidOperationException이 throw됩니다. 다음 예제에서는 bool?에서 bool로 안전하게 캐스팅할 수 있는 한 가지 방법을 보여 줍니다.

예제

            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# 참조)

nullable 형식(C# 프로그래밍 가이드)

개념

C# 프로그래밍 가이드