Перейти к содержимому
Последнее обновление

Приведение к типу BOOLEAN

Тип BOOLEAN представляет значения true или false и допускает только два состояния: true и false.

Из типа String​

Изменение поведения

Ранее строки вида '1.11' можно было привести к значению 'true' логического типа. Начиная с версии 4.0 они преобразуются в null (в нестрогом режиме) или вызывают ошибку (в строгом режиме). Ранее значения вида 'on', 'off', 'yes', 'no' преобразовывались в null. Начиная с версии 4.0 их можно преобразовать в соответствующие логические значения.

Строгий режим​

Определение в нотации BNF​

<boolean> ::= <whitespace>* <bool_like> <whitespace>*

<bool_like> ::= "0" | "1" | "t" | "T" | "f" | "F" | <yes> | <no> | <on> | <off> | <true> | <false>

<yes> ::= ("y" | "Y") ("e" | "E") ("s" | "S")

<no> ::= ("n" | "N") ("o" | "O")

<on> ::= ("o" | "O") ("n" | "N")

<off> ::= ("o" | "O") ("f" | "F") ("f" | "F")

<true> ::= ("t" | "T") ("r" | "R") ("u" | "U") ("e" | "E")

<false> ::= ("f" | "F") ("a" | "A") ("l" | "L") ("s" | "S") ("e" | "E")

<whitespace> ::= " " | "\t" | "\n" | "\r" | "\f" | "\v"

Описание правил​

Логические значения могут иметь следующие формы: 0, 1, yes, no, on, off, true, false; регистр символов не учитывается. Кроме того, перед логическим значением и после него может быть любое количество пробельных символов (включая пробелы, табуляцию, переводы строк и т. д.).

Если формат не соответствует этим правилам, выдаётся ошибка.

Примеры​

СтрокаРезультат приведения к boolКомментарий
"true"true
"false"false
" \t\r\n\f\v true \t\r\n\f\v"trueС пробельными символами в начале и конце
"1.1"ErrorНеверный формат
"YeS"trueРегистр не учитывается
'+0'ErrorНеверный формат

Нестрогий режим​

Определение в нотации BNF​

<boolean> ::= <whitespace>* <bool_like> <whitespace>*

<bool_like> ::= "0" | "1" | "t" | "T" | "f" | "F" | <yes> | <no> | <on> | <off> | <true> | <false>

<yes> ::= ("y" | "Y") ("e" | "E") ("s" | "S")

<no> ::= ("n" | "N") ("o" | "O")

<on> ::= ("o" | "O") ("n" | "N")

<off> ::= ("o" | "O") ("f" | "F") ("f" | "F")

<true> ::= ("t" | "T") ("r" | "R") ("u" | "U") ("e" | "E")

<false> ::= ("f" | "F") ("a" | "A") ("l" | "L") ("s" | "S") ("e" | "E")

<whitespace> ::= " " | "\t" | "\n" | "\r" | "\f" | "\v"

Описание правил​

Логические значения могут иметь следующие формы: 0, 1, yes, no, on, off, true, false; регистр символов не учитывается. Кроме того, перед логическим значением и после него может быть любое количество пробельных символов (включая пробелы, табуляцию, переводы строк и т. д.).

Если формат не соответствует этим правилам, возвращается null.

Примеры​

СтрокаРезультат приведения к boolКомментарий
"true"true
"false"false
" \t\r\n\f\v true \t\r\n\f\v"trueС пробельными символами в начале и конце
"1.1"nullНеверный формат
"YeS"trueРегистр не учитывается
'+0'nullНеверный формат

Из числовых типов​

Изменение поведения

Ранее нечисловые типы, такие как date/datetime, можно было преобразовывать в логический тип. Начиная с версии 4.0 это не поддерживается.

Строгий режим​

Описание правил​

Для числовых типов (int/double/decimal) ненулевые значения считаются true.

Положительный и отрицательный нули в числах с плавающей точкой преобразуются в false.

Примеры​

Числовой типРезультат приведения к boolКомментарий
121231true
0false
+0.0falseПоложительный ноль в числах с плавающей точкой
-0.0falseОтрицательный ноль в числах с плавающей точкой
-1true
1true

Нестрогий режим​

Описание правил​

Для числовых типов (int/double/decimal) ненулевые значения считаются true.

Положительный и отрицательный нули в числах с плавающей точкой преобразуются в false.

Примеры​

Числовой типРезультат приведения к boolКомментарий
121231true
0false
+0.0falseПоложительный ноль в числах с плавающей точкой
-0.0falseОтрицательный ноль в числах с плавающей точкой
-1true
1true