Forfatter: Brian Hvarregaard
Artikler skrevet: 23
UP tjent på artikler: 22.500
Hits: 2714
Niveau: Nybegynder
Artikel UP: 1.000
Rating:
Locals
Locals vinduet, ligesom immediate vinduet er kun aktivt når der er et aktivt breakpoint. Det viser de variable der er i det lokale scope samt deres værdi. Personligt bruger jeg det ikke så meget, jeg holder mig til at flytte min cursor over den variabel jeg vil se værdien på (så bliver den vist)

Som vist på ovenstående billede er det muligt at benytte både cursoren til at få informationer omkring de variable man har i spil i det scope hvor man nu engang har sit breakpoint. Den blå pil indikerer min cursor der er placeret over variablen "skoda" af typen "Bil". I første linie i det der folder ud kan vi se hvor klassen hører hjemme henne {DebugSample.Bil} er mit namespace og mit klassenavn. Jeg folder den ud og kan nu se alle properties, dette kan verificeres ved at kigge på selve klassen nedenunder mit breakpoint.
Ved den grønne pil viser jeg de samme informationer ved at bruge "Locals" vinduet, fordelen ved Locals vinduet frem for at bruge min cursor er at hvis jeg stepper (se det senere afsnit for forklaring) så skal flytte min cursor for at få det opdateret, mens "Locals" vinduet reflekterer ændringen med det samme. Som vi kan se i den første linie i "Locals" vinduet står der de samme informationer som ved vores cursor, nemlig namespace og klassenavn. Dette er rent faktisk klassens nedarvede "ToString()" metode der er blevet kaldt, så hvis vi vil have noget andet til at stå der kan vi blot overstyrre denne metode.

Den blå pil viser hvor vi overstyrer vores "ToString()" metode, og den grønne pil viser resultatet. Dette virker i et simpelt eksempel, men der findes en mere elegant løsning til dette. Bemærk venligst at dette er var selv noget jeg fandt ud af ved fra en artikel på
http://www.dotninjas.dk i artiklen:
http://www.dotninjas.dk/post/DebuggerDisplay-mfl.aspx omkring dette. Løsningen er at benytte klasse attributter til at løse det med. I stedet for at overstyrre vores "ToString()" metode kan vi "beskrive" med attributter hvordan klassen "Bil" skal vises i en debugger. Dette gøres med følgende kode:

Den grønne pil viser vores attribut, som gør det muligt for os at se ændringen i vores debug vinduer, og ved at holde cursoren hen over variablen. Bemærk at for at kunne benytte attributten, skal man bruge "System.Diagnostics" namespacet.