Provate questo codice con Visual Studio 2003 (è in VB perchè in questo momento ho VB aperto anche con C# non cambia nulla)
Module Module1
Sub Main()
Dim x As New A
Dim y As A.B = x.GetB '<-Mettete un breakpoint qui!
End Sub
Public Class A
Private Child As B
Public ReadOnly Property GetB() As B
Get
If (Child Is Nothing) Then Child = New B()
Return Child
End Get
End Property
Public Class B
End Class
End Class
End Module
Raggiunto il breakpoint proseguite a single step..., tutto ok, il codice funziona? bene.
Aprite ora la finestra Autos o Locals di Visual Studio e ripete l'operazione, come mai ora Child non è Nothing? chi la istanzia al posto mio?
La risposta è ovvia, la finestra Autos o Locals quando vi valorizza il valore di una property.
Vi assicuro, per esperienza personale, che questo 'dettaglio' può crearvi non pochi problemi durante il debug, sopratutto in situazioni complesse come quella in cui mi sono trovato Io oggi...
E in Visual Studio 2005?
Fortunatamente questo 'dettaglio' è stato sentito dal team del debugger il quale ha pensato di offrire un opzione per questa feature.
Deselezionandola non avrete più questo effetto indesiderato...