int in Könnte jemand die Zeit nehmen, mir die Sprache Untermauerung hier zu erklären:Wirkung von Gießen C#
int foo = myObject.SomeList.Count;
for (int i = 0 ; i < foo ; i++)
{
myObject.SomeList.Add(bar);
}
geht in eine Endlosschleife, weil foo
verweist auf einen Wert, der erhöht werden immer wieder. Ändern der ersten Zeile:
int foo = (int)myObject.SomeList.Count;
macht es gehen weg, irgendwie foo
von Referenz ändert ein für alle Mal zu schätzen wissen. Das ist wahrscheinlich ein Lehrbuch, aber warum passiert das?
Vielen Dank
EDIT: Ok, wie Patrick erwähnt, die Endlosschleife geschieht nur, wenn es keine vorherige Lagerung zu foo ist, die Besetzung sinnlos ist, was Sinn macht. Das ist in der Tat, was ich anfangs beim Debuggen dachte. Daher meine Überraschung, als die Besetzung es reparierte. Was tatsächlich passiert ist, dass ich von Visual Studio in die Irre geführt wurde, dass ich es repariert hatte, als es tatsächlich ein Problem der Synchronisation zwischen bearbeitetem Code und ausgeführtem Code gab, was zu falschen Schlussfolgerungen führte.
Welche Version von .Net und C#? – zendar
Bitte senden Sie ein kurzes, aber vollständiges Programm, das dieses Problem veranschaulicht. Etwas, das direkt in eine Datei "program.cs" in Visual Studio eingefügt, kompiliert und ausgeführt werden kann. –