Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Fundin
Založen: 19. 08. 2007 Příspěvky: 51 Bydliště: Praha
|
Zaslal: 4. září 2007, 18:36:08 Předmět: Zrušení spojení mezi kopírovanými objekty. |
|
|
Mam tridu "A" a potrebuju naplnit "promenou" zkopirovanim jine instance teto tridy "instance_a" aniz by se vytvorilo mezi nimi spojeni, jako kdyz napr provedu nejakou zmenu v "promena" tak se provede i v " instance_a".
kód: |
A promena = instance_a; |
|
|
Návrat nahoru |
|
|
OndraSej
Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 4. září 2007, 18:56:03 Předmět: |
|
|
V takovem pripade bud musi byt A hodnotoveho typu (tj. int, double, ..., nebo vytvorena jako struct (v C#) a ne jako class). Pak kazda promenna tohoto typu obsahuje vlastni kopii. Na druhou stranu jsou tam jina omezeni.
Pokud A je referencniho typu (tj. bud je to pole, nebo je zapsana jako class), pak se do promennych typu A neuklada "kopie" te instance, ale jen reference na ni (neco +- jako ukazatel v C++). Pokud chces, aby promenna pracovala s nezavislou kopii, tak si tu kopii musis vytvorit pomoci vlastnich prostredku. Bud pomoci new, pomoci metody MemberwiseClone() nebo pomoci interface ICloneable a metody Clone(). Pouhe = ale vzdy jenom zkopiruje referenci (ten ukazatel) a nikdy nove instance nevytvari. _________________ http://trionteam.net |
|
Návrat nahoru |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 4. září 2007, 19:10:40 Předmět: |
|
|
JJ, jen doplním, že to opravdu není "spojení", ale že např. v případě
kód: |
class A {
public int x;
}
A a = new A();
A b = a;
|
jsou proměnné a i b jen dva různé "názvy" pro jedinou instanci. Tedy např. v
se provede zápis jen jednou, ale ta nová hodnota bude vidět jak z a tak z b. _________________ Mám strach |
|
Návrat nahoru |
|
|
Fundin
Založen: 19. 08. 2007 Příspěvky: 51 Bydliště: Praha
|
Zaslal: 4. září 2007, 19:58:33 Předmět: |
|
|
ok tak dik a nejlepsi bude asi MemberwiseClone() protoze pouzit new by bylo sileny:D teda aspon v mym pripade:) |
|
Návrat nahoru |
|
|
|
|
Nemůžete odesílat nové téma do tohoto fóra Nemůžete odpovídat na témata v tomto fóru Nemůžete upravovat své příspěvky v tomto fóru Nemůžete mazat své příspěvky v tomto fóru Nemůžete hlasovat v tomto fóru
|
Powered by phpBB © 2001, 2005 phpBB Group
Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna