Невозможно преобразовать int в bool

Я столкнулся с проблемой, что C # в моем случае не может преобразовать число 1 в bool. В моем сценарии (bool) intValue не работает. Я получаю InvalidCastException . Я знаю, что могу использовать Convert.ToBoolean (...) , но мне просто интересно, что это не работает. Любое объяснение этому?

Мой код

if (actualValueType.Name == "Boolean" || setValueType.Name == "Boolean")
{
   if ((bool)actualValue != (bool)setValue)
   ...
}
48
задан theknut 1 December 2013 в 20:40
поделиться

1 ответ

В C # bool на самом деле является структурой Boolean , поэтому она не просто представлена ​​как 1 или 0 внутри. Кажется, что создатели языка пошли на явный чрезмерный подход в целом с языком. Чтобы выполнить то, что вы пытаетесь сделать (для эффективного приведения 1 к true и от 0 к false), сделайте следующее:

if (intValue == 1) {
    // do something
} else if (intValue == 0) {
    // do something else
} else {
    // invalid bool
}

Вы также можете отказаться от последнего предложения else и сделать типичный C-язык, и пусть intValue == 0 эквивалентно false, а все остальное - true.

0
ответ дан 7 November 2019 в 12:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: