-2

出于测试目的,我通常必须创建一个巨大的字符串数组,这些字符串在代码中都是随机的或唯一的。有没有一种简单的方法可以在 C# 中执行此操作...而不是手动实例化一堆字符串。如果我们也可以使用它作为一些自定义类的数组,并初始化简单的属性,那就太好了。

编辑:我试过这样做:

string myItems[] = { "ONE", "TWO" , "THREE" etc..}

For( loop through 100 )
{
    Use GetRandomFileName()
}
4

2 回答 2

2

您可以使用 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++;
}

希望能帮助到你。

于 2013-03-30T15:03:46.757 回答
1

是的,您可以,但这主要取决于您的具体要求。

一个随机字符串

这是一个示例函数,它将通过为这些字符(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;
}

100 人的清单

我们可以使用它来生成List100 个随机字符串,如下所示:

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 对象来生成所有随机数来避免。

感谢拨号器指出。

于 2013-03-30T15:02:06.397 回答