[C#] nullable bool을 변환 하시겠습니까? 부울

C #에서 nullable bool?을 어떻게 변환 bool합니까?

나는 시도 x.Value했거나 x.HasValue



답변

궁극적으로 null bool이 무엇을 나타낼 지 결정해야합니다. 경우 null이어야한다 false, 당신은이 작업을 수행 할 수 있습니다 :

bool newBool = x.HasValue ? x.Value : false;

또는:

bool newBool = x.HasValue && x.Value;

또는:

bool newBool = x ?? false;


답변

당신은 사용할 수 있습니다 널 병합 연산자 : x ?? something, something경우에 당신이 사용하고자하는 부울 값 x입니다 null.

예:

bool? myBool = null;
bool newBool = myBool ?? false;

newBool 거짓이 될 것입니다.


답변

Nullable{T} GetValueOrDefault()방법 을 사용할 수 있습니다 . null 인 경우 false를 반환합니다.

 bool? nullableBool = null;

 bool actualBool = nullableBool.GetValueOrDefault();


답변

당신이 사용하려고하는 경우 bool?if문 제가 할 수있는 가장 쉬운 방법 중 하나에 대해 비교하는 것입니다 찾을 수 true또는 false.

bool? b = ...;

if (b == true) { Debug.WriteLine("true"; }
if (b == false) { Debug.WriteLine("false"; }
if (b != true) { Debug.WriteLine("false or null"; }
if (b != false) { Debug.WriteLine("true or null"; }

물론 null과 비교할 수도 있습니다.

bool? b = ...;

if (b == null) { Debug.WriteLine("null"; }
if (b != null) { Debug.WriteLine("true or false"; }
if (b.HasValue) { Debug.WriteLine("true or false"; }
//HasValue and != null will ALWAYS return the same value, so use whatever you like.

응용 프로그램의 다른 부분으로 전달하기 위해 bool로 변환하려는 경우 Null Coalesce 연산자가 원하는 것입니다.

bool? b = ...;
bool b2 = b ?? true; // null becomes true
b2 = b ?? false; // null becomes false

이미 null을 확인하고 값만 원하는 경우 Value 속성에 액세스합니다.

bool? b = ...;
if(b == null)
    throw new ArgumentNullException();
else
    SomeFunc(b.Value);


답변

가장 쉬운 방법은 null 병합 연산자를 사용하는 것입니다. ??

bool? x = ...;
if (x ?? true) {

}

??널 (NULL) 값은 제공 가능 표현식을 검사하여 작동합니다. nullable 표현식에 값이 있으면 해당 값이 사용됩니다. 그렇지 않으면 오른쪽에있는 표현식을 사용합니다.??


답변

bool? a = null;
bool b = Convert.toBoolean(a); 


답변

완전한 방법은 다음과 같습니다.

bool b1;
bool? b2 = ???;
if (b2.HasValue)
   b1 = b2.Value;

또는 다음을 사용하여 특정 값을 테스트 할 수 있습니다.

bool b3 = (b2 == true); // b2 is true, not false or null