none
Property get et Debugger RRS feed

  • Question

  • Bonjour,

    Voici un court programme (VS 2010, .Net Framework).....difficile de faire plus simple

    Public Class Class_A
      Private _val As Integer
      Public Property Val() As Integer
        Get
          Debug.WriteLine("Getter")
          Return _val
        End Get
        Set(ByVal value As Integer)
          Debug.WriteLine("Setter")
          _val = value
        End Set
      End Property
      Public Sub New(ByVal val As Integer)
        Me.Val = val
      End Sub
    End Class
    
    Public Class Form1
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As New Class_A(25)
        a.Val = 55
      End Sub
    End Class
    
    

    Lors de l'exécution tout se passe correctement et la ligne "Setter" s'affiche 2 fois :

    - la première fois lors de l'appel au Setter dans le constructeur,

    - la seconde fois lors de l'affectation a.Val = 55

    Il n'y a donc aucun appel au Get.....

     

    Le problème survient en mode debug. Si je met un point d'arrêt sur la première ligne de Button1_Click, je vois apparaître

    Setter

    Getter

    puis lorsque je poursuis l'execution sur la seconde ligne (a.Val=55) à nouveau je vois

    Setter

    Getter

     

    Je crois comprendre (sans en être sur) que le débugger appelle le Get pour évaluer la propriété Val et afficher sa valeur dans la fenêtre espion.

    Mon problème est le suivant : comment empêcher ce mode de fonctionnement ? Par exemple dans le cas ou property get comprend une routine d'initialisation ou un assert, etc....

     

    Merci d'avance.

    vendredi 4 février 2011 15:38

Réponses

  • Bonjour,

    Effectivement si on veut évaluer Val pendant le débogage (après test ici, cela n'arrive que si je passe la souris sur le code ce qui affiche la valeur dans une bulle ? c'est bien ce qui est fait dans le debugger ?) le seul moyen est d'appeler le "get" pour pouvoir récupérer et afficher la valeur de cette propriété.

    Décocher dans "Outils", "Options", "Débogage", "Activer l'évaluation de la propriété et d'autres appels de fonctions implicites" semble ne plus évaluer les propriétés lorsque la souris passe dessus.

    Personnellement je nai pas souvenir d'avoir jamais eu un problème concret posé par ce comportement...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse Maximousse vendredi 4 février 2011 22:40
    vendredi 4 février 2011 18:16
    Modérateur