Se ho un ciclo, come di seguito:C# loop: l'iterazione attraverso una serie
foreach (string pass in new string[] { "pass1", "pass2", "pass3" })
{
x = pass; //etc
}
valuta la matrice di stringhe anonima vengono creati una volta inizialmente, o ricreato una volta per ogni passaggio?
Credo che il primo, ma i colleghi sono convinti che questo è un errore che si aspetta che accada perché dicono che ogni iterazione del ciclo foreach determina la creazione di una nuova serie di stringhe.
Il codice di disassemblaggio VS suggerisce che ho ragione, ma voglio essere sicuro.
Il motivo per cui stiamo osservando questo è cercare di capire un bug misterioso che segnala che una raccolta è stata cambiata mentre si scorre su di essa.
È possibile testarlo facilmente, inserire un valore 'DateTime' ad esempio invece di stringhe e ispezionare i membri in ciascuna iterazione. –
Un altro modo per mostrare che viene valutato solo una volta è quello di scorrere il codice in modalità di debug. Il codice che crea l'array di stringhe verrà evidenziato solo una volta. –
o 'nuova stringa [] {" pass1 "," pass "+ i ++," pass3 "}' – Nolonar