String jest typem referencyjnym prawda? Więc jak go się przekaże do metody (bez ref i bez out) i zmodyfikuje w metodzie to powinien mieć nową wartość prawda? To dlaczego tak nie jest?
public void Metoda1(string x)
{
x = "b";
}
string s = "a";
Metoda1(s);
Debug.WriteLine(s); //dalej wartosc 'a'
A jak tak samo zrobimy z instancją klasy (podobnie jak string to też typ referencyjny) to już po powrocie z metody mamy nową wartość - zgodnie z oczekiwaniem:
public class Klasa
{
public int zmienna;
}
public void Metoda2(Klasa x)
{
x.zmienna = 10;
}
Klasa k = new Klasa();
k.zmienna = 5;
Metoda2(k);
Debug.WriteLine(k.zmienna); //a tu sie zmienilo na '10'
To dlaczego string się nie zmienił a instancja klasy tak??