Ответ 1
myBool = !myBool;
Изменить: ОК, на основе уточненного понимания вопроса (т.е. myBool
говорит null, если оно было нулевым), это самый простой ответ.
У меня есть nullable bool. Что такое быстрый способ его инвертировать. В других словах, если значение TRUE делает его ЛОЖНЫМ, в противном случае сделайте его ИСТИННЫМ.
Чтобы уточнить (из комментариев):
Ожидаемое поведение: если значение nullable bool имеет значение, то инвертировать, в противном случае должно возвращать значение null.
myBool = !myBool;
Изменить: ОК, на основе уточненного понимания вопроса (т.е. myBool
говорит null, если оно было нулевым), это самый простой ответ.
Изменить, 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 |
|---------|-----------|
x =! (x?? false)