Witam.
Mam taki oto kod:
public struct Forecast
{
public int Temperature { get; set; }
public int Pressure { get; set; }
}
class Program
{
public static void ChangeTheString(string weather) { weather = "sunny"; }
public static void ChangeTheArray(string[] rainyDays) { rainyDays[1] = "Sunday"; }
public static void ChangeTheStructure(Forecast forecast) { forecast.Temperature = 35; }
static void Main(string[] args)
{
string weather = "rainy";
ChangeTheString(weather);
Console.WriteLine("The weather is " + weather);
string[] rainyDays = new[] {"Monday", "Friday" };
ChangeTheArray(rainyDays);
Console.WriteLine("The rainy days were on " + rainyDays[0] + " and "+rainyDays[1]);
Forecast forecast = new Forecast {Pressure = 700, Temperature = 20 };
ChangeTheStructure(forecast);
Console.WriteLine("The temperature is " +forecast.Temperature + "C");
Console.ReadKey();
}
}
Drugi output to : "The rainy days were on Monday and Sunday". Dlaczego wartość w rainyDays[1] została zmieniona? Czy to nie powinno działać na takiej samej zasadzie co pierwszy output, czyli zmienia tak naprawdę wartość zmiennej lokalnej? Dlaczego nie musimy tu użyć dyrektywy ref, aby odnieść się do konkretnej zmiennej? Trzeci output działa na tej samej zasadzie co pierwszy.