我有幾個數組的類型char []和字符串[]定義爲'靜態只讀'。他們的項目從未改變。Threadsafety和與靜態只讀陣列的foreach
'foreach'和'泛型'枚舉是線程安全嗎?
private static readonly string[] staticReadOnlyArray = new string[] { "someKey0", "someKey1", "someKey2", ... };
public bool SomeThreadSharedCall(string toCheck)
{
// #1
foreach (string s in staticReadOnlyArray)
{
if (s == toCheck)
return true;
}
return false;
// #2
return staticReadOnlyArray.Contains(toCheck);
// or #3
return staticReadOnlyArray.Any(s => string.Compare(toCheck, s, StringComparison.OrdinalIgnoreCase) == 0);
// or #4
staticReadOnlyArray.ForEach(s => someAction(s, toCheck));
}
感謝您的答覆。我清楚地理解C++上的Win32 API多線程。但我與C#4混淆。該數組是IEnumerable。對於移動它使用IEnumerator iterator = array.GetEnumerator()的引用。 那麼,是迭代器引用IEnumerator的新副本,還是每個線程都獲取對迭代器對象的一個副本的引用?在最後一種情況下,我們遇到了問題。 –
Yargo
我需要的全部 - 它是一個常量預定義數組和查找的線程安全方法。我有一個困境 - 重寫代碼從'foreach'到'for(int i = 0; i
Yargo