В C # bool? х = правда; если (x == true) выглядит неловко - PullRequest
4 голосов
/ 16 ноября 2010
bool? x = true;
if (x == true)

выглядит неловко.

Но иногда это именно то, что нужно.

Есть ли лучший способ?

РЕДАКТИРОВАТЬ:

Спасибо всем за попытки, но пока я не нашел способа, который побил бы оригинал.Думаю, мне просто нужно разобраться с неловкостью, возможно, прокомментируй это.

Ответы [ 3 ]

8 голосов
/ 16 ноября 2010

В зависимости от вашей ситуации, вы можете использовать оператор объединения нулей, который позволяет вам указать значение по умолчанию, которое вы будете использовать, если bool? не задано.Это не короче, чем ваша условная, но я думаю, что это полезно:

if(x ?? true) //defaults to true if x is not set

Или, чтобы напрямую повторить ваш случай (и в связи с популярным спросом):

if(x ?? false) //defaults to false if x is not set
1 голос
/ 16 ноября 2010
bool? x = true; 
if (x.HasValue && x.Value)
{ /* Other code here */ }

или используйте GetValueOrDefault(), но это не терь ...

bool? x = true; 
if (x.GetValueOrDefault(false))
{ /* Other code here */ }
1 голос
/ 16 ноября 2010

if (x) эквивалентно if (x == true). Нет необходимости делать дополнительное сравнение, так как x является логическим значением.

Редактировать: Пропущено, что было обнуляемым. В этом случае это действительно лучшее, что вы можете получить, если не хотите сделать простую вспомогательную функцию.

bool isTrue(bool? value) {
  return value == true;
}

Но if (isTrue(x)) не намного чище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...