Czy może ktoś mi dosadniej wytłumaczyć, w którym momencie "tracona" jest wartość
w Mainie mam wywołanie takich metod
SportsCar.SetMaxSpeedRequirement(200);
SportsCar.SetHorsepowerRequirement(250);
po tych dwóch wywołaniach mam takie (również w Main()):
Calculator.NumberCruncher();
Klasa Calculator wygląda nastepująco:
class Calculator
{
public static void NumberCruncher()
{
int sportsCarMaxSpeedReq = 3;
int sportsCarHorsePowerReq = 4;
SportsCar.GetMinimumRequirements( ref sportsCarMaxSpeedReq, ref sportsCarHorsePowerReq);
//Przetwarzanie liczb
Console.WriteLine("Wartość zmiennej sportsCarMaxSpeedReq: {0}", sportsCarMaxSpeedReq);
Console.WriteLine("Wartość zmiennej sportsCarHorsePowerReq: {0}", sportsCarHorsePowerReq);
}
}
Wywołuje ona metodę statyczną ze SportsCar, która wygląda tak:
public static void GetMinimumRequirements( ref int newMaxSpeed, ref int newHorsepower)
{
newMaxSpeed = maxSpeedRequirement;
newHorsepower = horsepowerRequirement;
Console.WriteLine("Wartości z wnętrza metody GetMinimumReguirements: {0} {1}", newMaxSpeed, newHorsepower);
//dopisałem to, by sprawdzić wartość zmiennych jeśli nie ma parametru "ref"
}
Wiem, że jeśli parametr ma dopisane ref to po wyjściu z metody nie wraca do wartości, którą miała przed wykonaniem metody, tylko już zostaje zmieniona.
Chciałem się spytać tylko w którym momencie jest w tym kodzie ten moment "porzucenia" wartości.
Jeśli usunę w metodzie statycznej GetMinimumRequirements przedrostek ref oraz w Main() też nie podam ref to wartości są różne.
Nie wiem czy dosyć jasno to opisałem. Jeśli jest przedrostek ref to wypisuje mi w obu przypadkach wartości 200 i 250. Natomiast jak nie dam ref to wartości są równe 3 i 4.
Czy dzieje się to jeśli wychodzimy z metody GetMinimumRequirements i wartości już są tracone(te 200 i 250)?