przekazywanie parametrow do funkcji

0

Witam! Jak to jest...skoro przekazuje obiekt do funkcji, to w funkcji jest jego kopia, ale dlaczego zmiana jakiegos pola tego obiektu w funkcji powoduje zmiane rowniez w oryginale ? Dopiero przypisanie mu nowrgo obiektu ni wprowadza zmian w oryginale?

0

Bo obiekt jest typem referencyjnym - zawsze się odwołujesz do orginalnego miejsca w pamięci i go edytujesz.

0

Do funkcji nie przekazujesz obiekt, a referencje, odwołanie do niego. Jest tylko jedna instancja.

0

Tzn, ze mimo ze kopia to jest pamietana jegp zawartosc. Czyli dziala tak, jakby np w funkcji do obiektu a przypisal b ?

0

to NIE JEST kopia obiektu, tylko wskażnik na ten obiekt. Przekazujesz wskaźnik, modyfikujesz oryginalny obiekt. Jeśli chcesz zrobić tak jak napisałeś "funkcji do obiektu a przypisal b" to musiałbyś skorzystać ze słowa kluczowego ref

1

Ergo

class C { 
	class A { public string B; } 
	void f(A objectWithFieldToUpdate, A objectToUpdate, ref A objectToUpdateByReference)
	{
		objectWithFieldToUpdate.B = "updated both inside and outside";
		objectToUpdate = new A() { B = "updated inside, left untouched outside" };
		objectToUpdateByReference = new A() { B = "updated both inside and outside" };
	}
}

Pisane z palca.

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