Effets secondaires et expressions
Mise à jour : novembre 2007
Cette rubrique s'applique à :
Édition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro et Team |
Légende du tableau :
Applicable |
|
Non applicable |
|
Commande ou commandes masquées par défaut. |
Un effet secondaire se produit lorsque l'évaluation d'une expression modifie la valeur des données dans votre application.
Vous devrez surveiller les effets secondaires si vous évaluez des expressions dans le débogueur. Si vous évaluez une expression dans la fenêtre Espion ou dans la boîte de dialogue Espion express, et si l'expression a des effets secondaires, vous risquez de modifier la valeur des variables dans une autre partie de votre programme sans vous en rendre compte. Les effets secondaires peuvent compliquer le débogage en donnant l'impression que des bogues existent alors que ce n'est pas le cas ou en masquant l'apparition de bogues bien réels.
Une cause fréquente d'effets secondaires est l'évaluation d'appels de fonctions dans une fenêtre de débogage. Ces évaluations ne passent en général pas inaperçues. Une cause plus subtile d'effets secondaires est l'évaluation de propriétés, ou d'autres appels de fonctions implicites, dans du code managé.
Le débogueur ne peut pas déterminer si une évaluation de propriété ou un appel de fonction implicite a des effets secondaires. C'est pourquoi, par défaut, il n'évalue pas automatiquement les appels de fonctions implicites. L'évaluation des propriétés est autorisée par défaut, mais peut être désactivée dans la boîte de dialogue Options. Lorsqu'un appel de fonction ou une propriété n'a pas été évalué, une icône de rafraîchissement apparaît. Vous pouvez évaluer manuellement l'expression en cliquant sur l'icône de rafraîchissement. Pour plus d'informations, consultez Comment : actualiser les valeurs des espions.
Lorsque l'évaluation de propriétés ou d'appels de fonction implicite est désactivée, vous pouvez forcer l'évaluation en utilisant le modificateur du format ac (pour C# uniquement). Reportez-vous à Spécificateurs de format en C#.