Операторы сравнения (Visual Basic)
Ниже приведены операторы сравнения, определенные в Visual Basic.
Оператор <
Оператор <=
Оператор >
Оператор >=
Оператор =
Оператор <>
Эти операторы сравнивают два выражения для определения равны ли они, и если нет то, как они отличаются.Is, IsNot и Like детально обсуждаются на отдельных страницах справки.Отношения операторов сравнения обсуждаются на этой странице.
result = expression1 comparisonoperator expression2
result = object1 [Is | IsNot] object2
result = string Like pattern
Части
result
Обязательный.Результатом является значение Boolean, представляющее результат сравнения.expression
Обязательный.Произвольное выражение.comparisonoperator
Обязательный.Любой оператор сравнения отношения.object1, object2
Обязательный.Имя любого ссылочного объекта.string
Обязательный.Произвольное выражение типа String.pattern
Обязательный.Любое выражение String или диапазон символов.
Заметки
В следующей таблице приводится список операторов сравнения и условий, определяющих, является ли resultTrue или False.
Оператор |
True if |
False if |
---|---|---|
< (меньше) |
expression1 < expression2 |
expression1 >= expression2 |
<= (меньше или равно) |
expression1 <= expression2 |
expression1 > expression2 |
> (больше) |
expression1 > expression2 |
expression1 <= expression2 |
>= (больше или равно) |
expression1 >= expression2 |
expression1 < expression2 |
= (равно) |
expression1 = expression2 |
expression1 <> expression2 |
<> (не равно) |
expression1 <> expression2 |
expression1 = expression2 |
Примечание |
---|
Оператор = (Visual Basic) также используется в качестве оператора присваивания. |
Операторы Is, IsNot и Like имеют особые функциональные возможности сравнения, отличающиеся от операторов из предыдущей таблицы.
Сравнение чисел
При сравнении выражения типа Single с выражением типа Double выражение Single преобразуется в Double.Такое поведение прямо противоположно поведению в Visual Basic 6.
Аналогично при сравнении выражения типа Decimal с выражением типа Single или Double выражение Decimal преобразуется в Single или Double.Для выражений Decimal любая дробная часть значения, меньшая 1E-28, может быть потеряна.Такая потеря дробного значения может привести к сравнению двух значений как равных, хотя они таковыми не являются.По этой причине следует осторожно использовать равенство (=) для сравнения двух переменных с плавающей запятой.Лучше проверить, что абсолютное значение разницы между двумя числами меньше, чем небольшой приемлемый допуск.
Погрешность чисел с плавающей запятой
При работе с числами с плавающей запятой, имейте в виду, что они не всегда имеют точное представление в памяти.Это может привести к непредвиденным результатам для определенных операций, таких как значение сравнения и Оператор Mod (Visual Basic).Дополнительные сведения см. в разделе Устранение неполадок, связанных с типами данных (Visual Basic).
Сравнение строк
При сравнении строк строковые выражения вычисляются на основе их алфавитного порядка сортировки, который зависит от параметра Option Compare.
Option Compare Binary задает метод сравнения строк на основе порядка сортировки, определяемого внутренним двоичным представлением символов.Порядок сортировки определяется кодовой страницей.В следующем примере показан типичный порядок двоичной сортировки.
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text задает метод сравнения строк на основе порядка сортировки текста (без учета регистра), определяемого региональными установками приложения.При установке Option Compare Text и сортировке символов в предыдущем примере применяется следующий текстовый порядок сортировки:
(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)
Зависимость от языкового стандарта
При установке Option Compare Text результат сравнения строк может зависеть от языкового стандарта, в котором выполняется приложение.Два символа в одном языковом стандарте могут считаться равными, а в другом нет.При использовании сравнения строк для принятия важных решений, например разрешить ли попытку входа в систему, следует учитывать чувствительность к языковым стандартам.Рассмотрите возможность установки Option Compare Binary или вызова StrComp, который учитывает языковой стандарт.
Операторы сравнения в программировании без определения типов данных
Использование операторов сравнения с выражениями Object не допускается при Option Strict On.При Option StrictOff и либо выражение expression1, либо expression2 является Object, типы времени выполнения определяют, как они будут сравниваться.В следующей таблице показано сравнение выражений и результаты сравнения в зависимости от типа операндов, определяемых во время выполнения:
Операнды |
Сравнение |
---|---|
Оба String |
Сравнение сортировки, основанное на характеристиках сортировки строк. |
Оба числовые |
Объекты преобразуются в Double, выполняется числовое сравнение. |
Один числовой и один String |
String преобразуется в Double, и выполняется числовое сравнение.Если String не может быть преобразовано в Double, то генерируется исключение InvalidCastException. |
Один или оба операнда являются ссылочными типами, отличными от String. |
Создается исключение InvalidCastException. |
При числовом сравнении Nothing приравнивается к 0.При сравнении строк Nothing обрабатывается как "" (пустая строка).
Перегрузка
Операторы сравнения (<.<=, >, >=, =, <>) могут быть перегружены; это означает, что класс или структура могут переопределить их поведение, когда операнд имеет тип этого класса или структуры.Если ваш код использует эти операторы для такого класса или структуры, убедитесь, что вы понимаете его переопределенное поведение.Дополнительные сведения см. в разделе Процедуры операторов (Visual Basic).
Обратите внимание, что оператор Оператор = (Visual Basic) может быть перегружен только как оператор сравнения, а не как оператор присваивания.
Пример
В следующем примере показано различное применение операторов сравнения, которые используются для сравнения выражений.Операторы сравнения возвращают результат Boolean, показывающий, является ли результат вычисления выражения True.Если операторы > и < применяются для строк, выполняется сравнение с использованием обычной алфавитной сортировки строк.Этот порядок может зависеть от настроек языкового стандарта.Зависит ли сортировка от регистра, определяет параметр Option Compare.
Dim testResult As Boolean
testResult = 45 < 35
testResult = 45 = 45
testResult = 4 <> 3
testResult = "5" > "4444"
В предыдущем примере первое сравнение возвращает False, а оставшиеся сравнения возвращают True.
См. также
Задачи
Устранение неполадок, связанных с типами данных (Visual Basic)
Ссылки
Порядок применения операторов в Visual Basic
Список операторов, сгруппированных по функциональному назначению (Visual Basic)