Partager via


Expressions dans Visual Basic

L'évaluateur d'expression managée accepte la plupart des expressions écrites en Visual Basic.Dans la fenêtre Exécution, l'évaluateur d'expression ne prend en charge que des instructions d'une seule ligne.

Les sections suivantes fournissent des informations spécifiques et traitent de certains des types d'expressions qui ne sont pas pris en charge ou sont partiellement pris en charge :

  • Casts

  • Dynamic Objects

  • Function Evaluation

  • Identifiers and Types

  • Import Aliases

  • Object Variables Containing Intrinsic Types

  • Operators

  • PropertyEvaluation

  • Strings

  • TypeOf Operator

  • Unsupported Keywords

  • Variable Declarations

  • WebMethods

Visual Basic ne prend pas en charge les règles de développement automatique pour afficher le contenu d'un type de données sous une forme significative.Pour plus d'informations, consultez Affichage d'éléments d'un type de données personnalisé.

Casts

Les casts simples fonctionnent dans le débogueur :

A = CStr(B)

Objets dynamiques

L'évaluateur d'expression peut évaluer des variables qui sont typées statiquement comme dynamiques.Il peut également évaluer des objets qui implémentent l'interface IDynamicObject.Lorsque les objets qui implémentent l'interface IDynamicObject sont évalués dans la fenêtre Espion, un nœud Affichage dynamique est ajouté.Le nœud Affichage dynamique affiche les membres de l'objet mais n'autorise pas la modification des valeurs des membres.

Les fonctionnalités suivantes des objets dynamiques ne sont pas prises en charge :

  • Opérateurs composés +=, -=, %=, /= et *=

  • De nombreux casts, notamment les casts numériques et casts d'argument de type

  • Appels de méthode avec plus de deux arguments

  • Accesseurs Get de propriété comportant plus de deux arguments

  • Accesseurs Set de propriété comportant des arguments

  • Assignation à un indexeur

  • Les opérateurs booléens && et ||

Évaluation de fonction

Le débogueur prend en charge l'évaluation des fonctions, y compris les fonctions surchargées.Par conséquent, vous pouvez entrer l'une des expressions suivantes et le débogueur appellera la version correcte de la fonction surchargée :

myFunction (param1)

myFunction (param1, param2)

L'évaluation d'une fonction dans le débogueur appelle et exécute le code pour cette fonction.Si la fonction a des effets secondaires, par exemple l'allocation de mémoire ou le changement de la valeur d'une variable globale, l'évaluation de la fonction dans une fenêtre du débogueur change l'état de votre programme, ce qui peut produire des résultats inattendus.

Lorsque vous définissez un point d'arrêt sur une fonction surchargée, l'emplacement du point d'arrêt dépend de la façon dont vous spécifiez la fonction.Si vous spécifiez uniquement le nom de la fonction, le débogueur définit un point d'arrêt sur chaque surcharge du nom de cette fonction.Si vous spécifiez la signature complète (nom de fonction et liste d'arguments complète), le débogueur définit un point d'arrêt sur la surcharge spécifiée.

Identificateurs et types

Les expressions du débogueur peuvent utiliser n'importe quel identificateur visible à l'intérieur de la portée actuelle.Si le débogueur est interrompu dans la fonction Magh, par exemple, vous pouvez utiliser la plupart des identificateurs visibles dans Magh, y compris les noms de variables et les noms de fonctions.Les constantes locales ne sont pas prises en charge.Vous pouvez définir la valeur de n'importe quelle variable visible à l'intérieur de la portée actuelle.

Le débogueur peut correctement afficher n'importe quelle variable de type primitif ou intrinsèque.Pour les variables de type classe, le débogueur affiche correctement la valeur en fonction du type le plus dérivé.Si vous avez un objet leo de type Lion, dérivé du type Cat, vous pouvez évaluer leo.Clawlength et obtenir la valeur correcte pour un objet de type Lion.

Alias d'importation

Vous ne pouvez pas utiliser d'alias d'importation dans les fenêtres du débogueur.

Variables objets contenant des types intrinsèques

Les variables objets qui contiennent des types de variables intrinsèques, par exemple des entiers, sont affichées et modifiées d'une façon qui peut sembler non intuitive.Par exemple, si cotre code source contient une variable objet qui se présente comme ceci :

Dim obj As Object = 5

La fenêtre Espion affiche la valeur de la variable obj sous la forme ci-dessous :

5 {Integer}

Pour remplacer la valeur de cette variable par 6, vous devez entrer :

6

Et non :

6 {Integer}

Après avoir modifié la valeur, vous remarquerez que le débogueur ajoute le {Integer} pour vous.

Opérateurs

Le débogueur évalue correctement la plupart des opérateurs, y compris :

  • Opérateurs arithmétiques : ( expr1+expr2, expr1-expr2, expr1*expr2, expr1/expr2, expr1\expr2, expr1^expr2 , expr1Modexpr2 ).

  • Les opérateurs d'assignation : (var1= expr2, var1^= expr2, var1*= expr2, var1/= expr2, var1\= expr2, var1+= expr2, var1-= expr2, var1&= expr2).

  • Les opérateurs de comparaison : (expr2< expr2, expr2<= expr2, expr1> expr2, expr1>= expr2, expr1= expr2, expr1<> expr2).

  • Opérateurs de concaténation : (expr1&expr2, expr1+expr2).

  • Opérateurs logiques : (expr1Andexpr2, expr1Orexpr2, expr1XOrexpr2, expr1AndAlsoexpr2, expr1OrElseexpr2, Notexpr1).

  • Les opérateurs unaires : (- expr1, Not expr1, GetType (type)).

Évaluation de propriété

Le débogueur peut évaluer les propriétés dans n'importe quelle fenêtre de variable.Cependant, l'évaluation d'une propriété dans le débogueur peut avoir des effets secondaires (tels que la modification des valeurs des variables) qui affectent les résultats du programme.Pour une protection contre les effets secondaires dus à une évaluation accidentelle, vous pouvez désactiver l'évaluation de propriété dans la boîte de dialogue Général, Débogage, Options.

Chaînes

En Visual Basic, vous pouvez utiliser l'opérateur Length dans une chaîne :

mystring.Length

ou

"hello world".Length

TypeOf, opérateur

En Visual Basic, vous pouvez utiliser l'opérateur TypeOf dans les fenêtres du débogueur :

TypeOf expressionIs type

Par exemple :

TypeOf Me Is Integer

affiche la valeur false.

Si vous utilisez TypeOf, il doit faire partie d'une expression qui utilise Is.Si vous utilisez TypeOf sans Is, vous obtiendrez le message d'erreur suivant :

Is required

Mots clés non pris en charge

Les mots clés Visual Basic suivants ne sont pas pris en charge dans les expressions des fenêtres du débogueur :

  • AddressOf

  • End

  • Error

  • Exit

  • Goto

  • On Error

  • Return

  • Resume

  • Select/Case

  • Stop

  • SyncLock

  • Throw

  • Try/Catch/Finally

  • With

De plus, aucun mot clé de niveau espace de noms ou module, tel que End Sub ou Module, n'est pris en charge.

Déclarations de variable

Vous ne pouvez pas déclarer de nouvelles variables explicites dans les fenêtres du débogueur.

Toutefois, vous pouvez assigner une variable implicite dans la fenêtre Exécution.La portée des variables implicites est celle du débogueur. Elles ne sont pas accessibles à l'extérieur du débogueur.Par exemple, l'instruction o = 5 crée implicitement une nouvelle variable o et lui assigne la valeur 5.De telles variables implicites sont de type Object, sauf si le type peut être déduit par le débogueur.

WebMethods

Vous ne pouvez pas appeler de WebMethods à partir des fenêtres du débogueur.

Voir aussi

Autres ressources

Expressions dans le débogueur

Référence du langage Visual Basic