Avatar billede Slettet bruger
15. november 2009 - 13:07 Der er 5 kommentarer

Objekt har to forskellige værdier!?

Jeg har følgende custom collection:
http://pastebin.com/m11305c3c

Nede i min replace metode, tager metoden en værdi som den skal erstatte list med i toppen. Jeg smider et event for at få at vide et andet sted i min kode at noget er VED at ændre sig. Problemet er, at hvis jeg debugger, så har list i toppen samme værdi som min parameter, men kigger jeg på this.list = list i metoden, er der forskel på disse!?

Hvordan kan list i toppen være forskellig fra this.list i min metode!?

Resultatet er, at mit beforechange event tager den nye værdi, hvor den skal tage værdien FØR ændringen sker.
Avatar billede bvli Praktikant
15. november 2009 - 17:25 #1
Er du sikker på, at det er replace-metoden der rejser event'et?

Jeg synes det er lidt misbrug af PropertyChangedEventArgs, det du laver. I det mindste bør du kalde dens constructor med den overload, hvor i du kan give den navnet på den property der bliver ændret, så ved du også hvilken property der bliver ændret :)

Anyway - jeg er ret usikker på, hvad du mener med "list i toppen har samme værdi"?

PS. der er ingen grund til at lave private events og så public's med add/remove. Og hvis det skal være rigtigt bør du navngive dine events: Changing og Changed.
Avatar billede Slettet bruger
15. november 2009 - 17:41 #2
Det jeg mener med list i toppen må da næsten give sig selv. Jeg snakker om field list, private List<T> list; i toppen..

Om jeg er i tvivl? nej.. som du kan se kalder den jo netop beforeChange lige i starten. Men det betyder heller ikke noget. Så snart jeg kommer ind i Replace metoden i debug, kan jeg se at værdien på list deklarationen i toppen f.eks har værdien "hej1", hvor den værdi Replace metoden med også har værdien "hej1". Men list bør slet ikke være ændret før jeg beder den om det i Replace metoden. Jeg kan sågar se værdien på private List<T> list; og this.list, som jo er én og samme ting, IKKE er ens når jeg kigger på den hhv i toppen og inde i Replace metoden. MEGET besynderligt.

Der er ingen grund til, i det her tilfælde, at fortælle PropertyChangedEventArgs hvilken property der ændres, jeg skal blot vide at noget ændres.
Avatar billede Slettet bruger
15. november 2009 - 17:42 #3
list bør f.eks have værdien "hej" INDEN jeg kalder this.list = list;
Avatar billede bvli Praktikant
15. november 2009 - 18:19 #4
Er det når du holder cursoren over din variabeldeklaration, eller er det i dit watch/auto-debugvindue det er sådan? Og kan du ikke tage fejl af variablen 'list' og parameteren 'list'? For i det scope du er i når du break'er, så er det altså rigtigt nok, hvis 'list' er hej1 medens 'this.list' er hej.
Avatar billede Slettet bruger
15. november 2009 - 18:48 #5
Det er når jeg holder cursor over.

Hvor er variablen list = "hej1" når jeg endnu ikke har sat den nogen steder? den bør vel først sættes når jeg kalder this.list = list! Det er jo ligsom hele ideen med at sætte objekter. Hvorfra bliver list sat?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

De Nationale Geologiske Undersøgelser for Danmark og Grønland (GEUS)

IT-systemadministrator søges til GEUS

Udviklings- og Forenklingsstyrelsen

Data Scientist til stærkt data- og analysekontor

Kalundborg Kommune

Data Scientist / udvikler

Mobilplan ApS

Content Creator