Операторы сравнения (Visual Basic)

Ниже приведены операторы сравнения, определенные в Visual Basic.

Оператор <

Оператор <=

Оператор >

Оператор >=

Оператор =

Оператор <>

Оператор Is

Оператор IsNot

Оператор Like

Эти операторы сравнивают два выражения, чтобы определить, равны ли они, а если нет, то как они отличаются. Is, IsNotи Like подробно рассматриваются на отдельных страницах справки. Операторы реляционного сравнения подробно рассматриваются на этой странице.

Синтаксис

result = expression1 comparisonoperator expression2  
result = object1 [Is | IsNot] object2  
result = string Like pattern  

Детали

result
Обязательный. Boolean Значение, представляющее результат сравнения.

expression1, expression2
Обязательный. Любое выражение.

comparisonoperator
Обязательный. Любой оператор реляционного сравнения.

object1, object2
Обязательный. Все имена ссылочных объектов.

string
Обязательный. Произвольное выражение String .

pattern
Обязательный. Любое String выражение или диапазон символов.

Замечания

В следующей таблице содержится список операторов реляционного сравнения и условий, определяющих, является True ли result илиFalse.

Оператор True, если False, если
< (Меньше) expression1 < expression2 expression1>= expression2
<= (Меньше или равно) expression1<= expression2 expression1 > expression2
> (Больше) expression1 > expression2 expression1<= expression2
>= (Больше или равно) expression1>= expression2 expression1 < expression2
= (равно) expression1 = expression2 expression1 <> expression2
<> (Не равно) expression1 <> expression2 expression1 = expression2

Примечание.

Оператор = также используется в качестве оператора назначения.

Оператор Is , IsNot оператор и Like оператор имеют определенные функции сравнения, которые отличаются от операторов в предыдущей таблице.

Сравнение чисел

При сравнении выражения типа с одним из Single типов DoubleSingle выражение преобразуется в Double. Это поведение отличается от поведения, найденного в Visual Basic 6.

Аналогичным образом при сравнении выражения типа с выражением типа DecimalSingle или DoubleDecimal выражение преобразуется в Single илиDouble. Для Decimal выражений любое дробное значение меньше 1E-28 может быть потеряно. Такая потеря дробного значения может привести к тому, что два значения могут сравниться как равные, если они отсутствуют. По этой причине следует учитывать при использовании равенства (=) для сравнения двух переменных с плавающей запятой. Более безопасно проверить, является ли абсолютное значение разницы между двумя числами меньше, чем небольшое допустимое значение.

С плавающей запятой Imprecision

При работе с числами с плавающей запятой следует помнить, что они не всегда имеют точное представление в памяти. Это может привести к непредвиденным результатам определенных операций, таких как сравнение значений и оператор mod. Дополнительные сведения см. в разделе "Устранение неполадок типов данных".

Сравнение строк

При сравнении строк выражения строк вычисляются на основе их алфавитного порядка сортировки, который зависит от 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результат сравнения строк может зависеть от языкового стандарта, в котором выполняется приложение. Два символа могут сравниться как равные в одном языковом стандарте, но не в другом. Если вы используете сравнение строк для принятия важных решений, таких как принятие попытки входа, следует быть оповещением о конфиденциальности языкового стандарта. Попробуйте задать или вызвать языковой StrCompстандарт, который учитывает языковой стандартOption Compare Binary.

Бестипное программирование с операторами реляционного сравнения

Использование реляционных операторов сравнения с Object выражениями не допускается.Option Strict On Если Option Strict это Offвыражение или expression1expression2Object выражение, типы времени выполнения определяют, как они сравниваются. В следующей таблице показано, как сравниваются выражения и результат сравнения в зависимости от типа среды выполнения операндов.

Если операнды являются Сравнение
Как String Сортируйте сравнение на основе характеристик сортировки строк.
Оба числовых Объекты, преобразованные в Doubleчисловое сравнение.
Одно числовое и одно String Выполняется String преобразование в числовое Double сравнение. String Если невозможно преобразовать Doubleобъект, InvalidCastException создается исключение.
Либо или оба являются ссылочными типами, отличными от String Возникает исключение InvalidCastException.

Числовые сравнения рассматриваются Nothing как 0. Сравнения строк обрабатываются Nothing как "" (пустая строка).

Перегрузка

Операторы реляционного сравнения (<. <=, =>>=) <>могут быть перегружены, что означает, что класс или структура могут переопределить их поведение, если операнда имеет тип этого класса или структуры. Если в коде используется любой из этих операторов в таком классе или структуре, убедитесь, что вы понимаете переопределенное поведение. Для получения дополнительной информации см. Operator Procedures.

Обратите внимание, что оператор = может быть перегружен только как реляционный оператор сравнения, а не как оператор назначения.

Пример

В следующем примере показано использование реляционных операторов сравнения, которые используются для сравнения выражений. Операторы реляционного сравнения возвращают Boolean результат, представляющий, вычисляется Trueли указанное выражение. При применении > операторов к < строкам сравнение выполняется с помощью обычного алфавитного порядка сортировки строк. Этот порядок может зависеть от параметра языкового стандарта. Зависит ли сортировка от параметра "Сравнение параметров" в зависимости от регистра.

Dim x As testClass
Dim y As New testClass()
x = y
If x Is y Then
    ' Insert code to run if x and y point to the same instance.
End If

В предыдущем примере первый результат сравнения возвращается False и остальные возвращаемые Trueсравнения.

См. также