Есть ли более чистый способ проверить, не является ли объект ложным? - PullRequest
3 голосов
/ 05 апреля 2011

Есть ли более чистый способ написать это?

if (!(obj is bool) || (bool)obj)

В PHP или JS вы можете написать

if (obj !== false) // note the double == to indicate a type-check

Это просто немного трудно читать, и довольно синтаксически уродливо в C #.


Чтобы быть абсолютно ясным, obj это object.

Ответы [ 3 ]

6 голосов
/ 05 апреля 2011
if (!false.Equals(obj))  { ... }

Редактировать: Поскольку я не хочу, чтобы @BoltClock терял зрение, вот что может быть лучше:

if ((bool?)obj != false) { ... }

Редактировать2: Не пытайтесь использовать то, что я изложил выше, потому что оно не будет работать, если obj относится к типу, отличному от bool? или bool.

2 голосов
/ 05 апреля 2011

Да, есть. Измените код так, чтобы тип obj был bool, а не object.

Где-то в вашем коде вы преобразовали свой bool в объект. Почему ты это сделал? Найди это место и держи его как бурая.

Это C #, а не PHP или JS. C # строго типизирован - используйте этот факт!

0 голосов
/ 05 апреля 2011

попробуйте, его легко прочитать, и иногда код должен быть читабельным.

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