voglio filtrare un array di stringhe:modificare gli elementi della lista tra PerOgni lambda
string[] args
dalla riga di comando, ad esempio: "-command1 xy -command2 ab -command3 cd"
prendendo tutte le parole con un '-' all'inizio, quindi convertendole in maiuscolo.
var commands = args.Where(x => x.StartsWith("-")).ToList<String>();
commands.ForEach(x => {
x.ToUpper()
});
commands.ToString();
Ciò restituirà la lista args con le parole che iniziano con '-' minuscolo - che è il lambda non viene applicata. Perchè è questo? Una copia dell'elenco viene creata per la cattura lambda, e questa viene modificata, non la lista originale stessa?
1. Non sta impostando 'x.ToUpper()' per nulla. 2. Ma anche se lo facessi, non si compilerebbe: le stringhe sono immutabili. Dovresti fare ciò: 'var commands = args.Where (x => x.StartsWith (" - ")). Seleziona (x => x.ToUpper()). ToList();' – Rob