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
Objets dynamiques
Évaluation de fonction
Identificateurs et types
Alias d'importation
Variables objets contenant des types intrinsèques
Opérateurs
PropertyEvaluation
Chaînes
TypeOf, opérateur
Mots clés non pris en charge
Déclarations de variable
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, le nom de fonction et la 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 ).
Opérateurs d'assignation : ( var1= expr2, var1^= expr2, var1*= expr2, var1/= expr2, var1\= expr2, var1+= expr2, var1-= expr2, var1&= expr2).
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 : (expr1And expr2, expr1Or expr2, expr1XOr expr2, expr1AndAlso expr2, expr1OrElse expr2, Notexpr1).
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 expression Is 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.