Ich mag ein String-Array filtern:Elemente in der Liste ändern mit ForEach Lambda
string[] args
von der Kommandozeile, zB: "-command1 xy -command2 ab -command3 cd"
Unter Berücksichtigung all die Wörter mit einem '-' am Anfang, dann konvertieren diese in Großbuchstaben. Dies wird die args Liste mit Wörtern beginnend mit Rück
var commands = args.Where(x => x.StartsWith("-")).ToList<String>();
commands.ForEach(x => {
x.ToUpper()
});
commands.ToString();
‚-‘ Kleinbuchstaben - das ist die Lambda nicht angewendet werden. Warum ist das? Wird eine Kopie der Liste für die Lambda-Erfassung erstellt, und das ist geändert, nicht die Originalliste selbst?
1. Sie setzen nicht 'x.ToUpper()' zu nichts. 2. Aber selbst wenn du es tust, würde es nicht kompilieren: Strings sind unveränderlich. Das solltest du tun: 'var commands = args.Where (x => x.StartsWith (" - ")). Wähle (x => x.ToUpper()). ToList();' – Rob