我有一个方法,如:
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; }
所以不是存储索引,而是计算它两次,他的推理是因为该方法将在多个线程中调用,所以索引中可能存在无效值.
我对线程的理解是有限的,但我相信每个线程都有自己的堆栈,其中参数str和index将被推送.我已经尝试过与他进行推理,这是一个可重入的代码,并且多线程无法修改此方法中的局部变量.
所以,我的问题是,我是否正确地假设缓存存储索引是一个更好的解决方案,因为它不会涉及计算索引两次,因为它是局部变量而str是方法本地的参数,所以没有办法多线程可以修改/更改str和index吗?
那是对的吗 ?