我有這樣的方法:重入代碼和局部變量
private static string AmpRemove(string str)
{
int index = str.IndexOf('&');
if (index > 0)
str = str.Substring(0, index);
return str;
}
在這裏,我想直到&
字符是從字符串中獲取文本。我的高級修改這個方法來
private static string AmpRemove(string str)
{
if (str.IndexOf('&') > 0)
str = str.Substring(0, str.IndexOf('&'));
return str;
}
因此,而不是存儲index
的,它會計算了兩遍,他的理由是,因爲該方法將在多個線程調用,有可能是存儲在index
無效值。
我對線程的理解是有限的,但我相信每個線程都有自己的棧,其中參數str
和index
將被推送。我已經嘗試過與他合作,這是一個可重入的代碼,並且多線程無法在此方法中修改局部變量。
所以,我的問題是,我是正確的假設,
緩存
存儲index
是一個更好的解決方案,因爲它不涉及兩次計算指數,因爲它是局部變量,str
是一個參數本地方法,是不是多線程可以修改/更改str
和index
?
這是正確的嗎?
是的你是對的。緩存'索引'雖然是錯誤的措辭。如果您在線程環境中使用索引,「index」只是該方法的局部變量。 – thumbmunkeys
是的,不知道我怎麼能爲此做出一個好的答案,但是,是的,你是對的... – CularBytes
是的,你的老人應該得到一個假期。 – Neolisk