Operatory porównania (Visual Basic)

Poniżej przedstawiono operatory porównania zdefiniowane w języku Visual Basic.

< Operator

<= Operator

> Operator

>= Operator

= Operator

<> Operator

Is, operator

IsNot, operator

Like, operator

Te operatory porównują dwa wyrażenia, aby określić, czy są równe, a jeśli nie, jak się różnią. Is, IsNoti Like są szczegółowo omówione na oddzielnych stronach Pomocy. Operatory porównania relacyjnego zostały szczegółowo omówione na tej stronie.

Składnia

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

generatora

result
Wymagany. Wartość Boolean reprezentująca wynik porównania.

expression1, expression2
Wymagany. Dowolne wyrażenie.

comparisonoperator
Wymagany. Dowolny operator porównania relacyjnego.

object1, object2
Wymagany. Wszystkie nazwy obiektów referencyjnych.

string
Wymagany. Dowolne String wyrażenie.

pattern
Wymagany. Dowolne String wyrażenie lub zakres znaków.

Uwagi

Poniższa tabela zawiera listę operatorów porównania relacyjnego oraz warunki określające, czy result ma wartość True , czy False.

Operator True Jeśli False Jeśli
< (Mniej niż) expression1 < expression2 expression1>= expression2
<= (Mniejsze niż lub równe) expression1<= expression2 expression1 > expression2
> (Większe niż) expression1 > expression2 expression1<= expression2
>= (Większe niż lub równe) expression1>= expression2 expression1 < expression2
= (Równe) expression1 = expression2 expression1 <> expression2
<> (Nie równa się) expression1 <> expression2 expression1 = expression2

Uwaga

Operator = jest również używany jako operator przypisania.

Operator Is , IsNot operator i Like operator mają określone funkcje porównania, które różnią się od operatorów w poprzedniej tabeli.

Porównywanie liczb

Podczas porównywania wyrażenia typu Single z jednym z typów DoubleSingle wyrażenie jest konwertowane na Doublewartość . To zachowanie jest przeciwieństwem zachowania znalezionego w Visual Basic 6.

Podobnie podczas porównywania wyrażenia typu Decimal z wyrażeniem typu Single lub Doublewyrażenie Decimal jest konwertowane na Single lub Double. W przypadku Decimal wyrażeń każda wartość ułamkowa mniejsza niż 1E-28 może zostać utracona. Taka utrata wartości ułamkowej może spowodować, że dwie wartości będą porównywane jako równe, gdy nie są. Z tego powodu należy zachować ostrożność podczas używania równości (=), aby porównać dwie zmienne zmiennoprzecinkowe. Bezpieczniej jest sprawdzić, czy bezwzględna wartość różnicy między dwiema liczbami jest mniejsza niż niewielka akceptowalna tolerancja.

Imprecision zmiennoprzecinkowa

Podczas pracy z liczbami zmiennoprzecinkowych należy pamiętać, że nie zawsze mają one dokładną reprezentację w pamięci. Może to prowadzić do nieoczekiwanych wyników niektórych operacji, takich jak porównanie wartości i operator mod. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z typami danych.

Porównywanie ciągów

Podczas porównywania ciągów wyrażenia ciągu są oceniane na podstawie ich kolejności sortowania alfabetycznego, która zależy od Option Compare ustawienia.

Option Compare Binary porównuje ciągi bazowe w kolejności sortowania pochodzącej z wewnętrznych reprezentacji binarnych znaków. Kolejność sortowania zależy od strony kodowej. W poniższym przykładzie pokazano typową kolejność sortowania binarnego.

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Option Compare Text porównuje ciągi w kolejności sortowania bez uwzględniania wielkości liter określonego przez ustawienia regionalne aplikacji. Po ustawieniu Option Compare Text i posortowaniu znaków w poprzednim przykładzie ma zastosowanie następująca kolejność sortowania tekstu:

(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)

Zależność ustawień regionalnych

Po ustawieniu Option Compare Textparametru wynik porównania ciągów może zależeć od ustawień regionalnych, w których aplikacja jest uruchomiona. Dwa znaki mogą być porównywane jako równe w jednym ustawieniach regionalnych, ale nie w innym. Jeśli używasz porównania ciągów do podejmowania ważnych decyzji, takich jak zaakceptowanie próby zalogowania się, należy otrzymywać alerty dotyczące poufności ustawień regionalnych. Rozważ ustawienie Option Compare Binary lub wywołanie StrCompelementu , które uwzględnia ustawienia regionalne.

Programowanie bez typów z operatorami porównania relacyjnego

Użycie operatorów porównania relacyjnego z Object wyrażeniami nie jest dozwolone w obszarze Option Strict On. Gdy Option Strict wartość to Off, lub expression1expression2 jest wyrażeniem Object , typy czasu wykonywania określają sposób ich porównywania. W poniższej tabeli przedstawiono sposób porównywania wyrażeń i wyniku porównania w zależności od typu środowiska uruchomieniowego operandów.

Jeśli operandy są Porównanie jest
Zarówno String Sortuj porównanie na podstawie cech sortowania ciągów.
Obie wartości liczbowe Obiekty przekonwertowane na Double, porównanie liczbowe.
Jedna liczba i jedna String Element String jest konwertowany na Double porównanie liczbowe i jest wykonywane. Jeśli nie można przekonwertować elementu String na Double, zostanie zgłoszony element InvalidCastException .
Oba typy odwołań są inne niż String Jest InvalidCastException zgłaszany.

Porównania liczbowe traktują Nothing jako 0. Porównania ciągów są traktowane Nothing jako "" (ciąg pusty).

Przeciążenie

Operatory porównania relacyjnego (<. <=, , >=>, =, <>) mogą być przeciążone, co oznacza, że klasa lub struktura może ponownie zdefiniować swoje zachowanie, gdy operand ma typ tej klasy lub struktury. Jeśli kod używa dowolnego z tych operatorów w takiej klasie lub strukturze, upewnij się, że rozumiesz ponownie zdefiniowane zachowanie. Aby uzyskać więcej informacji, zobacz Procedury operatorów.

Zwróć uwagę, że operator = może być przeciążony tylko jako operator porównania relacyjnego, a nie jako operator przypisania.

Przykład

W poniższym przykładzie przedstawiono różne zastosowania operatorów porównania relacyjnego, których używasz do porównywania wyrażeń. Operatory porównania relacyjnego zwracają Boolean wynik reprezentujący, czy wyrażenie określone zwraca wartość True. Po zastosowaniu > operatorów i < do ciągów porównanie jest wykonywane przy użyciu normalnego porządku sortowania alfabetycznego ciągów. Ta kolejność może być zależna od ustawień regionalnych. Określa, czy sortowanie uwzględnia wielkość liter, czy nie, zależy od ustawienia Porównanie opcji.

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

W poprzednim przykładzie pierwsze porównanie zwraca wartość False , a pozostałe porównania zwracają wartość True.

Zobacz też