Kopirovani tridy – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kopirovani tridy – .NET – Fórum – Programujte.comKopirovani tridy – .NET – Fórum – Programujte.com

 

wetty0
Newbie
30. 4. 2009   #1
-
0
-

Zdravím všechny,

mám začátečnickej dotaz.
Mám třídu např.TClass {int x;} a mám založeny dvě instance iA a iB. Potřeboval bych poradit, zda je v .NET nějaká funkce, pomocí které jednoduše překopíruji data z jedné třídy iA do druhé iB, tak že když poté změním v iB hodnoty, tak se ty hodnoty budou měnit pouze v iA. Prostým = to samozřejmě nejde.

Dík Petr

Nahlásit jako SPAM
IP: 213.195.202.–
wetty0
Newbie
30. 4. 2009   #2
-
0
-

Tak jsem zkusil serializaci a funguje to. :smile1:
Nemůžu ale s touto serializací narazit na nějaký problémek?

Dík

Nahlásit jako SPAM
IP: 213.195.202.–
rudolf_franek0
Stálý člen
2. 5. 2009   #3
-
0
-

Asi by bylo dobre lehce vylepsit popis chovani, ktere ocekavas, ale z toho, co si myslim, ze chapu mi prijde, ze serializace je za danych okolnosti spis kanon na vrabce...
Muzes vlozit nejakou rozumnou ukazku kodu ?

Nahlásit jako SPAM
IP: 90.178.66.–
wetty0
Newbie
2. 5. 2009   #4
-
0
-

OK, je to asi takto. Mám hlavní okno a v něm list, kde mám cca 100 až 200 objektů. Potřebuji otevřít okno, kde nějak postupně přenastavím klidně všechny objekty. No a potřebuji uživateli dát možnost zavřít okno bez možnosti potvrzení změn. Tedy vrátit se k původním hodnotám.




public class TTrida {
public int Hodnota;
...
}

...
TTrida t1 = new TTrida ();
TTrida t2 = new TTrida ();
...
t1.Hodnota = 5;
t2 = KopirovaciFunkce(t1); // kopirovani vsech dat z t1 do t2
...
a ted muzu t2 libovolne nastavovat a hodnoty v t1 zustavaj puvodni :-D



Ja to v C++ delal pomoci memcpy.

Nahlásit jako SPAM
IP: 213.195.202.–
wetty0
Newbie
2. 5. 2009   #5
-
0
-

A ještě jedna drobnost. Funkce, kdy si postupně překopíruji ručně hodnoty, tak tu nechci. Mám vyzkoušené, že se snadno na nějakou položku snadno zapomene. Hlavně pokud se přidává po nějakém čase nějaká nová.

Nahlásit jako SPAM
IP: 213.195.202.–
rudolf_franek0
Stálý člen
3. 5. 2009   #6
-
0
-

Pokud budu v TTrida mit pouze hodnotove typy, pak by postacilo:

public class TTrida

{
public int Hodnota;
public TTrida Clone()
{
return (TTrida)MemberwiseClone();
}
}
a pouziji to
TTrida t1 = new TTrida();

t1.Hodnota = 5;
TTrida t1Copy1 = t1.Clone();
a opravdu mohu vlastnost Hodnota menit libovolne

Problem nastane pokud se rozhodnu pouzivat referencni typy, pak je treba napsat trochu vice radek - viz:
TTrida t1 = new TTrida();

t1.Hodnota = 5;
t1.Button = new Button();
t1.Description = "Popiska1";
TTrida t1Copy1 = t1.Clone();
bool result1 = object.ReferenceEquals(
t1.Button, t1Copy1.Button); //true
TTrida t1Copy2 = t1.CloneDeep();
bool result2 = object.ReferenceEquals(
t1.Button, t1Copy2.Button); //false
TTrida s metodou CloneDeep je v priloze.

Nahlásit jako SPAM
IP: 90.178.66.–
rudolf_franek0
Stálý člen
3. 5. 2009   #7
-
0
-

PS: priklad v priloze TTrida.txt kopiruje pouze a jen pole z tridy TTrida, nikoliv napriklad vlastnosti ! Takze pro zcela obecne pouziti by bylo treba si s tim jeste trochu pohrat.

Nahlásit jako SPAM
IP: 90.178.66.–
wetty0
Newbie
3. 5. 2009   #8
-
0
-

To rudolf_franek :

Díky za zajímavé informace.

Nahlásit jako SPAM
IP: 213.195.202.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 46 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý