我今天遇到一个奇怪的问题,我可以理解原因。采取以下控制台程序。
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 处放置一个断点,则返回的值将有所不同。
似乎是某种并发问题?这是怎么回事?
谢谢