Операторы сравнения (Visual Basic)
Ниже приведены операторы сравнения, определенные в Visual Basic.
Оператор <
Оператор <=
Оператор >
Оператор >=
Оператор =
Оператор <>
Эти операторы сравнивают два выражения, чтобы определить, равны ли они, а если нет, то как они отличаются. 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
типов Double
Single
выражение преобразуется в Double
. Это поведение отличается от поведения, найденного в Visual Basic 6.
Аналогичным образом при сравнении выражения типа с выражением типа Decimal
Single
или Double
Decimal
выражение преобразуется в 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
выражение или expression1
expression2
Object
выражение, типы времени выполнения определяют, как они сравниваются. В следующей таблице показано, как сравниваются выражения и результат сравнения в зависимости от типа среды выполнения операндов.
Если операнды являются | Сравнение |
---|---|
Как 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
сравнения.