我在静态类中有一个静态方法,它可以生成随机字符串,如下所示:
public static class DataGenerator
{
public static string GenerateRandomString(int length)
{
const string Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var random = new Random();
return new string(
Enumerable.Repeat(Chars, length)
.Select(s => s[random.Next(s.Length)])
.ToArray());
}
}
Run Code Online (Sandbox Code Playgroud)
当我从同一个调用函数多次调用此方法时,它似乎缓存生成的字符串.
以下是一个用法示例:
var item = new CodeDescActivePo()
{
Active = true,
Code = DataGenerator.GenerateRandomString(10),
Description = DataGenerator.GenerateRandomString(10)
};
Run Code Online (Sandbox Code Playgroud)
请注意,有两个对GenerateRandomString的调用,我希望有两个唯一的随机数,在这种情况下,代码和描述总是相同的.
为什么GenerateRandomString每次都不会生成一个新的随机数?
你var random = new Random();在一起快速呼唤.由于默认种子是基于时间的,因此种子是相同的.最好在Random.Next()每次需要时创建此变量.
public static class DataGenerator
{
private readonly static Random random = new Random();
public static string GenerateRandomString(int length)
{
//etc etc using random.Next()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |