Ho un metodo simile:codice rientrante e le variabili locali
private static string AmpRemove(string str)
{
int index = str.IndexOf('&');
if (index > 0)
str = str.Substring(0, index);
return str;
}
Qui sto cercando di ottenere il testo da una stringa finché non si trova &
carattere. Il mio anziano modificato questo metodo per
private static string AmpRemove(string str)
{
if (str.IndexOf('&') > 0)
str = str.Substring(0, str.IndexOf('&'));
return str;
}
Così, invece di memorizzare il index
, calcolerà due volte, e il suo ragionamento era che, dal momento che il metodo potrebbe essere rimessa in più thread, ci potrebbe essere un valore non valido memorizzato in index
.
La mia comprensione del thread è limitata, ma credo che ogni thread avrebbe il proprio stack, in cui il parametro str
e index
verrà inserito. Ho provato a ragionare con lui, che questo è un codice di rientro e non c'è modo che più thread possano modificare una variabile locale in questo metodo.
Quindi, la mia domanda è, io ho ragione nel ritenere che
caching
memorizzazione index
è una soluzione migliore, dal momento che non comporterà il calcolo dell'indice due volte e dato che è variabile locale e str
è un parametro locale per il metodo, ci non è possibile che più thread possano modificare/modificare str
e index
?
È corretto?
sì hai ragione. 'caching 'index' è la dicitura sbagliata. 'index' è solo una variabile locale del metodo, indipendentemente se lo si utilizza in un ambiente con thread o meno. – thumbmunkeys
sì, non sono sicuro di come posso dare una buona risposta, ma sì, hai ragione ... – CularBytes
Sì, il tuo senior dovrebbe fare una vacanza. – Neolisk