出于测试目的,我通常必须创建一个巨大的字符串数组,这些字符串在代码中都是随机的或唯一的。有没有一种简单的方法可以在 C# 中执行此操作...而不是手动实例化一堆字符串。如果我们也可以使用它作为一些自定义类的数组,并初始化简单的属性,那就太好了。
编辑:我试过这样做:
string myItems[] = { "ONE", "TWO" , "THREE" etc..}
For( loop through 100 )
{
Use GetRandomFileName()
}
您可以使用 GUID
这是它的代码。在 c#.NET 中
string id = System.Guid.NewGuid().ToString();
Console.WriteLine(id);
如果您想要其中的 100 个,请使用循环。
int i=0;
List<string> id = null;
while(i<100)
{
id.add(System.Guid.NewGuid().ToString());
i++;
}
希望能帮助到你。
是的,您可以,但这主要取决于您的具体要求。
这是一个示例函数,它将通过为这些字符(97 到 122)生成ASCII 代码并将它们转换为s 再将它们附加到我们的字符串来构建一个length
由 az 字符组成的特定字符串。char
public string BuildRandomString(Random random, int length)
{
var random = new Random();
string text = string.Empty;
for (int i = 0; i < length; i++)
text += (char)random.Next(97, 122);
return text;
}
我们可以使用它来生成List
100 个随机字符串,如下所示:
var random = new Random();
var strings = new List<string>();
for (int i = 0; i < 100; i++)
strings.Add(BuildRandomString(random, 10));
这可以进一步扩展以获得不同长度的字符串,如下所示:
public string BuildRandomString(Random random, int minLength, int maxLength)
{
var text = string.Empty;
var length = random.Next(minLength, maxLength);
for (int i = 0; i < length; i++)
text += (char)random.Next(97, 122);
return text;
}
可以扩展此方法以提供您喜欢的任何内容,例如改进可以确保每个生成的字符串至少有一个元音,使其看起来更像一个单词。
当扩展方法以根据您的要求提供更理想的结果时,ASCII 表将非常方便。
System.Random
您会注意到Random
对象被实例化并作为参数传递给方法。BuildRandomString()
由于“伪随机”数字的工作方式,我们不能仅仅实例化一个新的。他们采用“种子”来确定第一个数字和第二个数字等是什么。new Random(102302)
这有好处,因为如果我们想通过使用例如多次处理相同的“随机”数据,我们可以明确指定一个种子。
当您不使用种子时,将使用默认构造函数,它根据系统时钟生成种子。问题是这个数字在连续使用时会返回相同的种子,所以我们需要使用相同的变量。它也可以很容易地成为包含我们BuildRandomString
方法的类的成员变量。
来自 MSDN:
默认种子值来自系统时钟并且具有有限的分辨率。因此,通过调用默认构造函数连续创建的不同 Random 对象将具有相同的默认种子值,因此将产生相同的随机数集。这个问题可以通过使用单个 Random 对象来生成所有随机数来避免。
感谢拨号器指出。