IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Pole s vlastní třídou se kompletně přepísuje

Aktivity
Avatar
Jakub Ransdorf:15.1.2016 13:57

Definováno:
public Odpovedi[] pole_pro_odpovedi = new Odpovedi[maxi­malni_pocet_o­tazek];
Odpovedi odpovedi = new Odpovedi();
int pomocne_poradi = -1;

public class Odpovedi
{
public string true_odpoved;
public string your_odpoved;
public string otazka;
}

a v následující funkci, která je volána na zmáčknutí tlačítka, se mi vždy kompletně přepíše celé pole.

public void Pro_reseni ()
{
pomocne_poradi += 1;
odpovedi.true_od­poved = label10.Text.ToS­tring();
odpovedi.your_od­poved = label11.Text.ToS­tring();
odpovedi.otazka = pole[pomocne_po­radi].otazka;
pole_pro_odpo­vedi[pomocne_po­radi] = odpovedi;
}

proč mi "pole_pro_odpovedi" vždy přepíše prvky pole (pole_pro_odpo­vedi[0],[1],.­..,[n]) posledními hodnotami

Děkuji za reakce...

 
Odpovědět
15.1.2016 13:57
Avatar
JOF
Tvůrce
Avatar
Odpovídá na Jakub Ransdorf
JOF:15.1.2016 15:05

Mohl bys ještě vypsat tu část, kde voláš metodu Pro_reseni() ?

 
Nahoru Odpovědět
15.1.2016 15:05
Avatar
jt.e
Člen
Avatar
Odpovídá na Jakub Ransdorf
jt.e:15.1.2016 17:06

nedal si tu vše, ale můj tip je, že přiřazuješ třídy pouze pomocí =, bez klonování.

ps, proč děláš toto: string str = label10.Text.ToS­tring(); když Text u labelu je typu string ?

Editováno 15.1.2016 17:08
 
Nahoru Odpovědět
15.1.2016 17:06
Avatar
Lukáš Křehula:15.1.2016 17:35

Důvod je jednoduchý. Předávájí se odkazy v paměti. Řešení je v té metodě vytvořit proměnnou typu Odpovedi a tu pak zapsat do pole.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
15.1.2016 17:35
Avatar
milos.loub
Člen
Avatar
Odpovídá na Lukáš Křehula
milos.loub:15.1.2016 19:37

Omlouvam se za palec dolu, s Tvym resenim souhlasim. Jedna instance je sdilena pro kazdou polozku v poli,proto maji vsechny polozky posledni hodnoty

 
Nahoru Odpovědět
15.1.2016 19:37
Avatar
Jakub Ransdorf:15.1.2016 21:08

Děkuji moc, už to funguje...

 
Nahoru Odpovědět
15.1.2016 21:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.