Подтвердить что ты не робот

С#, быстрый способ инвертировать nullable bool?

У меня есть nullable bool. Что такое быстрый способ его инвертировать. В других словах, если значение TRUE делает его ЛОЖНЫМ, в противном случае сделайте его ИСТИННЫМ.

Чтобы уточнить (из комментариев):

Ожидаемое поведение: если значение nullable bool имеет значение, то инвертировать, в противном случае должно возвращать значение null.

4b9b3361

Ответ 1

myBool = !myBool;

Изменить: ОК, на основе уточненного понимания вопроса (т.е. myBool говорит null, если оно было нулевым), это самый простой ответ.

Ответ 2

Изменить, 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);

вот таблица истинности, я знаю, это скучно, но я хотел видеть, как SO обрабатывает "таблицы"

   value     !value  
|---------|-----------|
|  null   |   null    |
|---------|-----------|
|  false  |   true    |
|---------|-----------|
|  true   |   false   |
|---------|-----------|

Ответ 3

x =! (x?? false)