Przesyłanie obiektu do metody

0

Jeśli mamy referencje do danego obiektu i przesyłamy go przez wartość do metody to w metodzie jest kopia tej referencji do obiektu. I jeśli jest to kopia to czemu może zmieniać dane dla głównego obiektu?

0

Bo to kopia referencji a nie kopia obiektu?

1

Referencja jest jak skierowanie do tego samego lekarza, nie ważne ilu różnym osobom, na każde zapytanie od odpowie ten sam specjalista. Jeśli chcesz innego rezultatu musisz mieć zupełnie nowe skierowanie, w C# służy do tego słowo kluczowe "new".

0

To jeśli wysyłam kopie referencji to jakby tworzę kopię głęboką? A jak wysyłam oryginał referencji wtedy tworzę kopię płytką?

0

jesli to nie jest value type (jak struct, enum czy prymityw) to do funkcji zawsze wysylasz referencje a nie obiekt

0

kopie referencji albo oryginał referencji

0

jesli to nie jest value type (jak struct, enum czy prymityw) to do funkcji zawsze wysylasz referencje a nie obiekt.

Ale chyba kopie referencji?

0

Możesz wysłać referencje, albo jej kopie, ale nie obiekt.

0

Zmienne definiowane jako klasa działają jako referencje do obiektu przechowywanego w pamięci. I to właśnie te zmienne wysyłasz czy kopiujesz.

0

Obiekt jest cały czas jeden dopóki go jawnie nie sklonujesz
Nie ma różnicy czy przesyłasz referencję czy kopię referencji - to nadal referencje do tego samego obiektu

0

Jeśli mam taką funkcję i przesyłam kopię referencji do obiektu klasy Osoba:

static void Funkcja(Osoba p)
p.wiek = 10;

p = new Osoba("Tadeusz",25); 

to dlaczego do referencji p nie można przypisać nowej referencji?

0

Do p jak najbardziej możesz.
Ale dlatego, że przesyłasz kopię referencji, to zmiana ta nie jest widoczna na zewnątrz funkcji, bo zmieniasz tylko to na co wskazuje ta twoja lokalna kopia.

0
static void Funkcja(Osoba p)
{
p = new Osoba("Tadeusz",25); 
p.wiek = 10;
}

To jak w funkcji zmienię to na co pokazuje kopia referencji i dalej wykonam instrukcję p.wiek = 10, to już nie powinno zmienić tego obiektu po za funkcją na wiek = 10, a jednak zmienia.

0

Jednak wtedy już nie zmienia czyli jest ok.

1 użytkowników online, w tym zalogowanych: 0, gości: 1