답변:
궁극적으로 null bool이 무엇을 나타낼 지 결정해야합니다. 경우 null
이어야한다 false
, 당신은이 작업을 수행 할 수 있습니다 :
bool newBool = x.HasValue ? x.Value : false;
또는:
bool newBool = x.HasValue && x.Value;
또는:
bool newBool = x ?? false;
Linq
'Where'절 에 대한 'Quick Action'에서 제안되었습니다. lifted operators
Linq 내에서 작동하지 않는 것처럼 보이는 이유를 이해할 수 없었습니다 (아마도 VB.NET일까요?).-방금 테스트했으며 그것은 잘못된 캐스트 예외가 던져 않습니다
Nullable{T}
GetValueOrDefault()
방법 을 사용할 수 있습니다 . null 인 경우 false를 반환합니다.
bool? nullableBool = null;
bool actualBool = nullableBool.GetValueOrDefault();
if (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);
이 답변은 단순히 bool?
조건에서 테스트하려는 경우 사용 사례 입니다. 또한 정상을 얻는 데 사용할 수 있습니다 bool
. 그것은 내가 개인적으로 coalescing operator ??
.
조건을 테스트하려면 다음을 사용할 수 있습니다.
bool? nullableBool = someFunction();
if(nullableBool == true)
{
//Do stuff
}
위의 if는 true 인 경우에만 bool?
true입니다.
또한 이것을 사용 bool
하여bool?
bool? nullableBool = someFunction();
bool regularBool = nullableBool == true;
마녀는
bool? nullableBool = someFunction();
bool regularBool = nullableBool ?? false;
VB.NET
경우에는dim newBool as Boolean = CBool(x)
어떨까요? 윌null
로 변환false
또는 예외가 발생한다?