「静的読取り専用」として定義されたchar []とstring []型の配列がいくつかあります。彼らのアイテムは決して変化しません。静的読取り専用配列のスレッドセーフとforeach
'foreach'と 'generics'列挙型はスレッドセーフですか?
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));
}
ありがとうございます。私はWin32 APIのマルチスレッド化をC++ではっきりと理解しています。しかし、私はC#4と混同しています。配列はIEnumerableです。移動の場合は、IEnumerator iterator = array.GetEnumerator()の参照を使用します。 IEnumerator の新しいコピーを参照するイテレータか、または各スレッドがイテレータオブジェクトの1つのコピーへの参照を取得していますか?最後のケースでは問題があります。 –
Yargo
私が必要とするのは、常に定義済みの配列で、検索のためのスレッドセーフなメソッドです。私は「foreach」から「for(int i = 0; i
Yargo