Foreach Iterationsvariable ??
-
Hallo bin auf meiner Suche nach der XMl ;Lösung im anderen Thread auf folgendes aus der msdn gestoßen :
foreach(XmlNode node1 in node.ChildNodes) foreach (XmlNode node2 in node1.ChildNodes) if (node2.Name == "price") { Decimal price = Decimal.Parse(node2.InnerText); // Increase all the book prices by 20% String newprice = ((Decimal)price*(new Decimal(1.20))).ToString("#.00"); Console.WriteLine("Old Price = " + node2.InnerText + "\tNew price = " + newprice); node2.InnerText = newprice; //!?!?!?! }
Ich dachte der foreach Iterator ist nur zum Anzeigen, nicht zum Ändern da ?
Sowas geht ja, z:B. auch nicht :
int[] arr = new int[12]; foreach (var v in arr){ v+=2; }
-
Hat vielleicht was damit zu tun, daß da die Iterationsvariable nur eine Referenz aufs echte Objekt ist und nicht das Objekz seberö
-
Wo und unter was kann ich das nachlesenb ?
-
-
Ok, aber bzgl. der foreach schlefe, das sie referenzen ändern kann steht da nix drin oder hab ich das übersehen
-
Tut sie ja auch nicht.
-
Die foreach Schleife kann auch keine Referenzen ändern.
foreach (var blah in blubb) { if (blah.Var > 100) blah = new Blah(); // <---- Geht nicht, sollte IIRC nen Kompilierfehler geben else blah.Var++; // Geht, da die Referenz *nicht* geändert wird sondern nur das referenzierte Objekt }
-
Geht, da die Referenz *nicht* geändert wird sondern nur das referenzierte Objekt
The Jumping Point Kapiert