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: Změna hodnoty proměnné se kterou se nepracuje

Aktivity
Avatar
Lu Kiss
Člen
Avatar
Lu Kiss:9.10.2015 20:58

Ahoj, setkal jsem se s problémem který je pro mne absolutně španělskou vesnicí.
Mám třídu A v ní protected atribut typu pole charů (aphabet) a v něm znaky abecedy. Třída B dědí z A a má atribut substitution (též pole charů), do kterého je přiřazena proměnná alphabet. Poté udělám algortmus nad substitution a teď ta záhadná věc. Jak je možné že ačkoli s alphabet nepracuji, tak je její obsah roven substitution? Předem děkuji za vystvětlení.

this.substitution = this.alphabet;
            Random rnd = new Random();
            for (int i = 0; i < this.substitution.Length; i++)
            {
                int j = rnd.Next(0, this.substitution.Length);
                char temp = this.substitution[i];
                this.substitution[i] = this.substitution[j];
                this.substitution[j] = temp;
            }

P.S. doufám že řešení nebude nějaká triviální blbost, to by mě fakt jeblo :DD

 
Odpovědět
9.10.2015 20:58
Avatar
Odpovídá na Lu Kiss
Libor Šimo (libcosenior):9.10.2015 21:07

Nebude to tym, ze substitution = alphabet (obidva ukazuju na to iste miesto v pamati)? Teda ked zmenis jedno, zmeni sa aj druhe.

Nahoru Odpovědět
9.10.2015 21:07
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Lu Kiss
Jan Vargovský:9.10.2015 21:07

Odpověď na tohle najdeš v každém tutoriálu, který se dostal za "hello world". Pole jsou v C# referenční typ. To znamená tohle:

var a = {'a', 'a'};
var b = a;
b[0] = 'b';

a == b == {'b', 'a'}

a nemusel jsem vůbec sáhnout na pole a, ale i tak je na 0. indexu znak b.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
9.10.2015 21:07
Avatar
Lu Kiss
Člen
Avatar
Lu Kiss:9.10.2015 21:19

díky :) vyřešil jsem to přesně jak je psáno v tutoriálu přes metody Copy třídy Array

 
Nahoru Odpovědět
9.10.2015 21:19
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 4 zpráv z 4.