Przeczytam początek C#, aby odświeżyć moją pamięć na C# (tło w C++).Zmienna zakres w C#
natknąłem tego fragmentu w książce:
int i;
string text;
for (i = 0; i < 10; i++)
{
text = "Line " + Convert.ToString(i);
Console.WriteLine("{0}", text);
}
Console.WriteLine("Last text output in loop: {0}", text);
Fragment powyżej nie zostanie skompilowany - bo według książki, tekst zmienna nie jest zainicjowana (tylko zainicjowany w pętli - a wartością ostatni przypisany do niego jest tracony, gdy blok pętli zostanie zakończony
Nie mogę zrozumieć, dlaczego wartość przypisana do wartości L została utracona tylko dlatego, że zakres, w którym została utworzona wartość R został zakończony - nawet jeśli Wartość L jest nadal w zakresie.Czy ktoś może wyjaśnić, dlaczego zmienny tekst traci wartość przypisaną w pętli ?.
Poprosił kogoś o wyjaśnienie, dlaczego ... – DaveHogan
Sry, moja wina. +1 wtedy, nawet jeśli nie wiem, która wartość powinna zostać utracona, ponieważ wszystko pozostanie w zasięgu. edytuj: znowu, czym są wartości L i R? : D – atamanroman
@fielding: lvalue zwykle oznacza wartość, do której można przypisać, rwartość jest dowolnym wyrażeniem, zobacz http://en.wikipedia.org/wiki/Value_%28computer_science%29 –