Kezdőoldal » Számítástechnika » Programozás » (C#) Hogyan lehet ezt megcsiná...

(C#) Hogyan lehet ezt megcsinálni referencia típusoknál?

Figyelt kérdés

Van egy referencia típusom (konkrétan List-em), és létezik két referenciám (OPT és E néven). Szeretném egy feladatban megtalálni az optimális megoldást úgy, hogy minden kombinációt végigpörgetek, majd megnézem, hogy jobb-e mint az eddigi legjobb (kb. mint a maximumkiválasztásnál). Ha találok egy jobbat, akkor azt elmentem az OPT nevű List-be. Ezután nézném a többi megoldást, tehát az E változik. De ekkor az OPT is változik, mivel ugyanoda mutat, ahova az E. Hogyan lehetne ezt kiküszöbölni? Tehát hogy az OPT ne változzon az E változásával.


Remélem érthetően magyaráztam el (elég késő/korán van már). Köszönöm a válaszokat!


2017. máj. 5. 04:19
 1/3 anonim ***** válasza:

Tehát valami olyasmit akarsz, hogy van egy valtozod (E), amiben objektum van, es van egy ilyen típusú listád (L). Egy cikusban végigmész valami elemeken, a jelenlegi elemet az E-ben tárolod, és attól félsz, ha felülírod az E-t, akkor a listában is az összes elem E lesz a legvégén?


Amikor a listához hozzáadsz, akkor a referenciát adod át, nem magát a változót. Utána azt nyugodtan felülírhatod.

2017. máj. 5. 05:39
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:

A probléma az, hogy amikor eljut odáig a kód, hogy "OPT=E", akkor a háttérben az történik, hogy az 'OPT' ugyanarra a memóriaterületre fog mutatni, mint az 'E', tehát nem átmásolódnak az értékei az 'OPT'-ba. Ami azért baj, mert az 'E'-vel tovább számol a gép, az 'E' folyamatosan változik (illetve az a memóriaterület ahova mutat), de ekkor az 'OPT' is változik, hisz ugyanoda mutat az is.


Sikerült megoldanom egyébként, "OPT=E" helyett "E.CopyTo(OPT)" írva megoldotta a problémát. (ekkor a háttérben új memóriaterület foglalódik le, tehát csinál egy 'new List<T>();'-et, és ebbe másolja át az E-ben tárolt adatokat szépen egyesével)

2017. máj. 5. 12:37
 3/3 anonim ***** válasza:
Akkor félreértettem a kérdésed :)
2017. máj. 5. 16:35
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!