<分区>
我正在尝试创建一个随机生成的单词字符串,除非我连续多次调用它,否则它工作正常。这是一个 WebForms 页面,单词列表来自一个文件。
我怀疑在没有 C# 的情况下我无法理解某些东西,或者 ASP.NET 在这种情况下可能会起作用,有人可以解释为什么会发生这种情况以及如何进行修复吗?
这是方法
public string GeneratePhrase()
{
// get dictionary file
var data = File.ReadAllLines(HttpContext.Current.Server.MapPath("~/libs/words.txt"));
Random rand = new Random();
int r1 = rand.Next(data.Count());
int r2 = rand.Next(data.Count());
int r3 = rand.Next(data.Count());
string p1 = data.ElementAt(r1).ToLower();
string p2 = data.ElementAt(r2).ToLower();
string p3 = data.ElementAt(r3).ToLower();
string ret = string.Format("{0}{1}{2}", p1, p2, p3);
return ret;
}
如果我在 PostBack
期间调用它一次,它很好并且总是创建一个随机的单词组合。但是,如果我在 PostBack 期间多次使用它,它只会重复每次调用中的相同随机字符串。
string s1 = this.GeneratePhrase();
string s2 = this.GeneratePhrase();
string s3 = this.GeneratePhrase();
Response.Write(s1);
Response.Write(s2);
Response.Write(s3);
输出
tirefriendhotdog
tirefriendhotdog
tirefriendhotdog
为什么会发生这种情况?