Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Voici les opérateurs de comparaison définis dans Visual Basic.
Opérateur <
Opérateur <=
Opérateur >
Opérateur >=
Opérateur =
Opérateur <>
Ces opérateurs comparent deux expressions pour déterminer si elles sont égales ou non, et si ce n’est pas le cas, comment elles diffèrent.
Is
, IsNot
et Like
sont abordés en détail sur les pages d’aide distinctes. Les opérateurs de comparaison relationnelle sont abordés en détail sur cette page.
Syntaxe
result = expression1 comparisonoperator expression2
result = object1 [Is | IsNot] object2
result = string Like pattern
Pièces
result
Obligatoire. Valeur Boolean
représentant le résultat de la comparaison.
expression1
, expression2
Obligatoire. Toute expression.
comparisonoperator
Obligatoire. N’importe quel opérateur de comparaison relationnelle.
object1
, object2
Obligatoire. Tous les noms d’objets de référence.
string
Obligatoire. Toute String
expression.
pattern
Obligatoire. Toute String
expression ou plage de caractères.
Remarques
Le tableau suivant contient une liste des opérateurs de comparaison relationnelle et des conditions qui déterminent s’il s’agit result
True
ou False
non.
Opérateur |
True si |
False si |
---|---|---|
< (Inférieur à) |
expression1 < expression2 |
expression1
>= expression2 |
<= (Inférieur ou égal à) |
expression1
<= expression2 |
expression1 > expression2 |
> (Supérieur à) |
expression1 > expression2 |
expression1
<= expression2 |
>= (Supérieur ou égal à) |
expression1
>= expression2 |
expression1 < expression2 |
= (Égal à) |
expression1 = expression2 |
expression1 <> expression2 |
<> (Non égal à) |
expression1 <> expression2 |
expression1 = expression2 |
Remarque
L’opérateur = est également utilisé comme opérateur d’affectation.
L’opérateur Is
, l’opérateur IsNot
et l’opérateur Like
ont des fonctionnalités de comparaison spécifiques qui diffèrent des opérateurs du tableau précédent.
Comparaison des nombres
Lorsque vous comparez une expression de type Single
à un de type Double
, l’expression Single
est convertie en Double
. Ce comportement est opposé au comportement trouvé dans Visual Basic 6.
De même, lorsque vous comparez une expression de type Decimal
à une expression de type Single
ou Double
, l’expression Decimal
est convertie en Single
ou Double
. Pour Decimal
les expressions, toute valeur fractionnaire inférieure à 1E-28 peut être perdue. Une telle perte de valeur fractionnaire peut entraîner la comparaison de deux valeurs comme égales lorsqu’elles ne le sont pas. Pour cette raison, vous devez vous occuper de l’utilisation de l’égalité (=
) pour comparer deux variables à virgule flottante. Il est plus sûr de vérifier si la valeur absolue de la différence entre les deux nombres est inférieure à une petite tolérance acceptable.
Imprecision à virgule flottante
Lorsque vous travaillez avec des nombres à virgule flottante, gardez à l’esprit qu’ils n’ont pas toujours une représentation précise en mémoire. Cela peut entraîner des résultats inattendus de certaines opérations, telles que la comparaison de valeurs et l’opérateur Mod. Pour plus d’informations, consultez Résolution des problèmes liés aux types de données.
Comparaison de chaînes
Lorsque vous comparez des chaînes, les expressions de chaîne sont évaluées en fonction de leur ordre alphabétique de tri, qui dépend du Option Compare
paramètre.
Option Compare Binary
base les comparaisons de chaînes sur un ordre de tri dérivé des représentations binaires internes des caractères. L’ordre de tri est déterminé par la page de codes. L’exemple suivant montre un ordre de tri binaire classique.
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text
base les comparaisons de chaînes sur un ordre de tri textuel non respectant la casse déterminé par les paramètres régionaux de votre application. Lorsque vous définissez Option Compare Text
et triez les caractères dans l’exemple précédent, l’ordre de tri de texte suivant s’applique :
(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)
Dépendance des paramètres régionaux
Lorsque vous définissez Option Compare Text
, le résultat d’une comparaison de chaînes peut dépendre des paramètres régionaux dans lesquels l’application s’exécute. Deux caractères peuvent être comparés comme égaux dans un paramètre régional, mais pas dans un autre. Si vous utilisez une comparaison de chaînes pour prendre des décisions importantes, telles que l’acceptation d’une tentative de connexion, vous devez être alerté à la sensibilité des paramètres régionaux. Envisagez de définir Option Compare Binary
ou d’appeler le StrCompparamètre régional, qui prend en compte les paramètres régionaux.
Programmation sans type avec des opérateurs de comparaison relationnelle
L’utilisation d’opérateurs de comparaison relationnelle avec Object
des expressions n’est pas autorisée sous Option Strict On
. Quand Option Strict
est Off
, et soit expression1
expression2
Object
une expression, les types d’exécution déterminent la façon dont ils sont comparés. Le tableau suivant montre comment les expressions sont comparées et le résultat de la comparaison, en fonction du type d’exécution des opérandes.
Si les opérandes sont | Comparaison |
---|---|
Les deux String |
Comparaison de tri en fonction des caractéristiques de tri de chaîne. |
Les deux chiffres | Objets convertis en Double comparaison numérique. |
Un numérique et un String |
La String conversion Double en comparaison numérique est effectuée. Si la String valeur ne peut pas être convertie Double en , une InvalidCastException valeur est levée. |
Les deux sont des types de référence autres que String |
Une InvalidCastException est levée. |
Les comparaisons numériques sont considérées Nothing
comme 0. Les comparaisons de chaînes sont traitées Nothing
comme ""
(une chaîne vide).
Surcharge
Les opérateurs de comparaison relationnelle (<
. <=
, , >=
>
, =
, <>
) peuvent être surchargés, ce qui signifie qu’une classe ou une structure peut redéfinir leur comportement lorsqu’un opérande a le type de cette classe ou structure. Si votre code utilise l’un de ces opérateurs sur une telle classe ou structure, veillez à comprendre le comportement redéfini. Pour plus d’informations, consultez Procédures d’opérateur.
Notez que l’opérateur = peut être surchargé uniquement en tant qu’opérateur de comparaison relationnelle, et non en tant qu’opérateur d’assignation.
Exemple :
L’exemple suivant montre différentes utilisations d’opérateurs de comparaison relationnelle, que vous utilisez pour comparer des expressions. Les opérateurs de comparaison relationnelle retournent un Boolean
résultat qui indique si l’expression indiquée prend True
la valeur . Lorsque vous appliquez les >
opérateurs aux <
chaînes, la comparaison est effectuée à l’aide de l’ordre alphabétique normal des chaînes. Cet ordre peut dépendre de votre paramètre de paramètres régionaux. Si le tri respecte la casse ou non dépend du paramètre Comparaison d’options .
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
Dans l’exemple précédent, la première comparaison retourne False
et les comparaisons restantes retournent True
.