今日、私はその理由を理解できるという奇妙な問題に遭遇しました。次のコンソールプログラムを使用します。
internal class Program
{
private static void Main(string[] args)
{
string s1 = GenerateRandomCode(8);
string s2 = GenerateRandomCode(8);
string s3 = GenerateRandomCode(8);
}
public static string GenerateRandomCode(int length)
{
string charPool = "ABCDEFGOPQRSTUVWXY1234567890ZabcdefghijklmHIJKLMNnopqrstuvwxyz";
StringBuilder rs = new StringBuilder();
Random random = new Random();
for (int i = 0; i < length; i++)
{
rs.Append(charPool[(int)(random.NextDouble() * charPool.Length)]);
}
return rs.ToString();
}
}
プログラムのにブレークポイントを設定してプログラムを実行すると、s1、s2、s3の値はすべて等しくなります。たとえば、s2にブレークポイントを設定すると、返される値は異なります。
ある種の並行性の問題のように見えますか?どうしたの?
ありがとう