Я столкнулся с проблемой, что C # в моем случае не может преобразовать число 1 в bool. В моем сценарии (bool) intValue
не работает. Я получаю InvalidCastException
. Я знаю, что могу использовать Convert.ToBoolean (...)
, но мне просто интересно, что это не работает. Любое объяснение этому?
Мой код
if (actualValueType.Name == "Boolean" || setValueType.Name == "Boolean")
{
if ((bool)actualValue != (bool)setValue)
...
}
В 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
.