2010-03-17 2 views
12

nullable bool이 있습니다. 그것을 반전시키는 빠른 방법은 무엇입니까? 즉, 값이 TRUE이면 거짓, 그렇지 않으면 TRUE로 설정합니다. C#, nullable bool을 변환하는 빠른 방법?

는 (코멘트에서) 명확히하기 :

예상되는 동작은 다음과 같습니다 널 (NULL) 부울에 값이 있다면, 반전, 그렇지 않은 경우는 null를 반환해야합니다.

+5

null의 역수는 무엇이라고 생각합니까? –

+1

@Allen, nullable bool 값이있는 경우 내 예상 된 동작입니다 다음 반전, 그렇지 않으면 null 반환해야합니다 ... –

+5

당신이 생각하는 방법. myBool이 원하는 동작을 제공합니다. – DRBlaise

답변

27

myBool = !myBool;

편집 : OK, 문제의 세련된 이해를 바탕으로, 위의 가장 간단한 대답 (즉 myBool가 null의 경우는 null 말한다).

+0

감사합니다 adam, nullable 형식이 작동합니까? –

+3

젠장, "게시물이 너무 짧다"라는 오류가 발생합니다. – ChrisF

+0

@JL : 값이 null이 아닌 한 null 허용 가능 부울에서 작동합니다. 이 경우 먼저 myBool.HasValue를 테스트해야합니다. –

19

편집, drblaise는 !, 맞다 잘 작동 여기

bool? a = null; 
bool? b = false; 
bool? c = true; 

a = !a; 
b = !b; 
c = !c; 

Assert.AreEqual(a, null); 
Assert.AreEqual(b, true); 
Assert.AreEqual(c, false); 

입니다

value  !value 
|---------|-----------| 
| null | null | 
|---------|-----------| 
| false | true | 
|---------|-----------| 
| true | false | 
|---------|-----------| 
+1

+1, 비슷하게^= 참을 수도 있지만 이것은 너무 어둡습니다. –

2

진리표, 내가 알고, 그것은 지루하지만 난 어떻게 SO 처리 "테이블"을보고 싶어 x =! (x ?? false)

+0

x =! x? –

관련 문제