[ ajz @ 17.03.2006. 20:04 ] @
Nemogu da razumem. Zasto se ovo desava:

Imam deklarisan objekat neke moje klase. i sad kada ga dodam u listu jednom pa jos jednom ovaj novi, sa drugim vrednostima, se prepise preko starog. u ovo sam siguran jer sam proverio sa listbox-om i foreach petljom. Da li ima veze zato sto je objekat istog imena?
Evo kako sam ga deklarisao

Code:

        Linija zacrt = new Linija();
        List<Linija> lista = new List<Linija>();
        .
        .Dodavanje vrednosti zacrt-u
        .

        lista.Add(zacrt);


Da li neko vidi gresku ili ima neki savet?
[ negyxo @ 18.03.2006. 03:09 ] @
Pa ovaj snippet sto si dao ne govori mnogo. Odavde ispada da imas samo jedno dodavanje zacrt objekta. Kako si opisao meni se cini da si ti radio sledecu stvar
Code:

Linija zacrt = new Linija();
List<Linija> lista = new List<Linija>();

//ovo samo lupam
zacrt.x = 10;

lista.Add(zacrt);

zacrt.x = 20;

lista.Add(zacrt);

A to ti nazalost nece poci za rukom jer je objekat isti tj. referenca mu je ista. Zanimljvo je da lista cuva dve iste reference, mene samo cudi sto nema neki exception za ovako nesto ili je mozda upitanju bug ili feature :)
Resenje je da instanciras/kopiras/kloniras novi objekat linija i dodas ga u listu ukoliko je ovo gore upitanju a ako ne, onda lepo copy/paste ceo kod pa da vidimo.
[ ajz @ 19.03.2006. 16:05 ] @
Sve ovo se dogadja u mouse_down pa kad god kliknem dodeli vrednosti objektu.
P.S.
Sta lista cuva reference ili vrednosti??
[ ntadic @ 20.03.2006. 09:01 ] @
Uvijek se chuvaju reference.

Vrijednosti dolaze u obzir samo kod vrijednosnih(prostih) tipova: string, bool, int....
[ ajz @ 20.03.2006. 18:01 ] @
da li neko moze da pomogne oko ovog problema.
@negyxo kako da uradim copiranje/kloniranje/instanciranje u jednoj metodi a da objekat bude dostupan drugoj???
[ negyxo @ 21.03.2006. 02:10 ] @
Citat:
ajz: da li neko moze da pomogne oko ovog problema.


Ali kog problema?
Imas neko haoticno pitanje pa je malo tesko razumeti konkretno tvoj problem.


Code:

//Instaciranje:
Linija zacrt1 = new Linija();

//Kopiranje
Linija zacrt1 = zacrt.Copy(); //ovde moras imati pre toga vec instaciran objekat zacrt i koji ce, naravno, imati metodu Copy

//Kloniranje
Linija zacrt1 = Linija.Clone(); //znaci isto kao i Copy, to je sve stvar nekog standarda, mogao bi nazvati i recimo Duplikat :)


Poenta je da dobijes nekako novi objekat. Pa da ga onda dodas u listu.

Evo, da ne bi pisao kasnije...
Code:


List<Linija> lista = new List<Linija>();

Linija zacrt = new Linija();
zacrt.x = 10;

lista.Add(zacrt);

//Linija zacrt2 = new Linija();
//Linija zacrt2 = zacrt.Copy();
zacrt = new Linija();
zacrt.x = 20;

lista.Add(zacrt);


Citat:
ajz: kako da uradim copiranje/kloniranje/instanciranje u jednoj metodi a da objekat bude dostupan drugoj???


E da ja ne bi ovde pisao nekakve tutorijale lepo otvori MSDN i napisi scope pa na citanje.

[ ajz @ 22.03.2006. 16:19 ] @
Evo detaljno opisanog pitanja.
Ja pravim public objekat zacrt tipa Linija.
Klasa Linija ima dva svojstva P1 i P2.
Vrednost P1 unosi se u metodi mouse_down(...){ zacrt.P1=e.Y; }
Vrednost P2 unosi se u metodi mouse_up(...){ zacrt.P2 = e.X; }
i sad objekat zacrt stavim u Listu.
i kad god se pozove mouse down nova vrednost za P1
i kad god se pozove mouse up nova vrednost za P2
ali u listi postoji tacan broj parova vrednosti ali su te vrednosti iste. :(
eto to je moj problem.
Ako stavim da se objekat zacrt pravi u mouse_down nece biti dostupan mouse_up metodi tako da time nista ne resavam, ani ono scope mi nista ne govori.
[ negyxo @ 24.03.2006. 01:52 ] @
Gledaj ovako,
Sad si vec po drugi put potvrdio da imas problem sa "vidljivoscu" objekta. Na MSDN kad ukucas scope u search, medju prvim rezultatima ti izbaci Variable and Method Scope in Microsoft .NET, doduse za VB je, ali princip je isti. Potrazi malo na netu ako ti je tako lakse. Kad to budes razumeo lako ces resiti to sto te muci. Ajd' sa srecom.