Ich schreibe ein Programm, das die Elemente aus einem Array in einer foreach-Schleife anzeigen soll.
Ich wollte die Elemente des Arrays ändern, indem ich jedem Element eine Zeichenfolge "sad" hinzufüge, aber wenn das Programm ausgeführt wird, bleibt das Array gleich.
%Vor%Abgesehen von dem, was Chris gesagt hat, könntest du einfach LINQ verwenden, um zu erreichen, was du willst:
%Vor%Hier erstellen Sie eine neue Zeichenfolge, die völlig unabhängig von der Zeichenfolge im Zeichenfolgen-Array ist. Sie haben die alte Zeichenkette nicht geändert (Sie können nicht; Zeichenketten sind unveränderlich). Sie legen dann einfach diese neue längere Zeichenfolge auf den Boden - Sie aktualisieren das Array usw. nicht.
Versuchen Sie stattdessen etwas wie:
%Vor% Dieses ersetzt jedes Element im Array durch eine neue Zeichenfolge. Beachten Sie, dass Sie eine Liste / Sammlung / Array usw. nicht während der Iteration mit foreach
aktualisieren können, da dies den Iterator unterbrechen kann. Daher die for
Schleife stattdessen.
An keinem Punkt in Ihrem Code ändern Sie die Werte im Array. Sie erstellen ein neues string
für jeden Wert im Array, verkettet mit der Zeichenfolge "sad"
.
Lösung
Sie können eine for-each
Variable nicht ändern. Sie erhalten eine Nachricht wie:
Kann nicht 's' zugewiesen werden, da es sich um eine 'foreach iteration variable' handelt.
Setze stattdessen eine einfache for
Schleife ein.
Sehen Sie sich diesen Teil des Codes an:
%Vor% Sie verketten die Zeichenfolge in s
mit der Zeichenfolge "sad"
und speichern sie in der Variablen b
. Dann zeigen Sie den Inhalt der Variablen s
an. Wenn Sie den Inhalt der Variablen b
stattdessen anzeigen würden, wäre am Ende jeder Zeichenfolge ein sad
.