Ich habe eine Methode wie:Reentrante Code und lokale Variablen
private static string AmpRemove(string str)
{
int index = str.IndexOf('&');
if (index > 0)
str = str.Substring(0, index);
return str;
}
Hier Ich versuche, Text aus einer Zeichenfolge zu erhalten, bis &
Zeichen gefunden wird. Mein Senior geändert, um dieses Verfahren zu
private static string AmpRemove(string str)
{
if (str.IndexOf('&') > 0)
str = str.Substring(0, str.IndexOf('&'));
return str;
}
Anstatt also die index
zu speichern, wird es zweimal berechnen, und seine Begründung war, dass da das Verfahren in mehreren Threads aufgerufen werden würde, da ungültiger Wert in index
gespeichert sein könnte.
Mein Verständnis von Thread ist begrenzt, aber ich glaube, dass jeder Thread einen eigenen Stapel haben würde, wo die Parameter str
und index
würden geschoben werden. Ich habe versucht, mit ihm zu argumentieren, dass dies ein reentranter Code ist und es keine Möglichkeit gibt, dass mehrere Threads eine lokale Variable in dieser Methode modifizieren könnten.
Also, meine Frage ist, bin ich recht in der Annahme, dass
Caching
index
Speichern eine bessere Lösung ist, da es sich nicht zweimal Berechnung Index beinhalten wird und da es lokale Variable ist und str
ist ein Parameter zur Methode lokal, dort ist keine Möglichkeit, dass mehrere Threads str
und index
ändern/ändern könnten?
Ist das korrekt?
Ja, Sie haben Recht. caching 'index' ist jedoch die falsche Formulierung. 'index' ist nur eine lokale Variable für die Methode, unabhängig davon, ob Sie sie in einer Thread-Umgebung verwenden oder nicht. – thumbmunkeys
ja, nicht sicher, wie ich dafür eine gute antwort geben kann, aber ja, du hast recht ... – CularBytes
Ja, dein Senior sollte Urlaub machen. – Neolisk