Verwenden einer Foreach-Schleife mit StringArray in C #

8

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%     
user2371290 12.05.2013, 21:20
quelle

4 Antworten

7

Abgesehen von dem, was Chris gesagt hat, könntest du einfach LINQ verwenden, um zu erreichen, was du willst:

%Vor%     
Tim Schmelter 12.05.2013 21:26
quelle
5
%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.

    
Marc Gravell 12.05.2013 21:25
quelle
3
%Vor%

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.

%Vor%     
christopher 12.05.2013 21:23
quelle
0

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 .

    
Guffa 12.05.2013 21:24
quelle

Tags und Links