2010-03-17 19 views
12

Null bir bool'um var. Onu tersine çevirmenin hızlı bir yolu nedir? Diğer ifadelerde, değer DOĞRU ise FALSE yapar, aksi halde TRUE yapar. C#, null bir boole dönüştürmenin hızlı yolu?

(yorumlardan) netleştirmek için:

Beklenen davranıştır: null bool değeri varsa, o zaman ters, aksi boş dönmelidir.

+5

null'ın tersi olmayı düşünür müsünüz? –

+1

@Allen, benim beklenen davranışım, eğer yapılabilen boole bir değere sahipse, o zaman ters çevir, aksi halde geri dönmeliyiz ... –

+5

Bunu düşünmek üzeresin. ! myBool size istediğiniz davranışı verecektir. – DRBlaise

cevap

27

myBool = !myBool;

Düzenleme: Tamam, söz konusu rafine bir anlayışa dayalı, yukarıdaki basit cevap (yani myBool o boş durumunda sıfır diyor).

+0

Teşekkürler adam, bu nullable türleri üzerinde çalışacak mı? –

+3

Lanet, "çok kısa post" hatasıyla dövüldü. – ChrisF

+0

@JL: Değeri boş olmadıkça null olmayan booleanlar üzerinde çalışacaktır. Bu durumda, önce myBool.HasValue'yi test etmeniz gerekir. –

19

Düzen, drblaise !, doğru gayet güzel çalışıyor burada

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); 

olduğunu

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

+1, benzer şekilde bir^= true olabilir, ancak bu muhtemelen çok belirsizdir –

2

doğruluk tablosu, biliyorum, sıkıcı ama nasıl SO ele "tabloları" görmek istedim x =! (x ?? false)

+0

neden sadece x =! X? –

İlgili konular