C#生成不重复随机字符串类可以通过以下几个步骤来实现:
- 导入命名空间:System.Security.Cryptography和System.Text。
C#
using System.Security.Cryptography;
using System.Text;
- 定义一个生成随机字符串的函数,函数可以包括一个参数,指定生成的字符串的长度。函数内部要创建一个随机数生成器对象,并使用该对象生成一个随机数序列。随机数序列可以通过使用GUID.NewGuid().ToByteArray()方法获取。将随机数序列转换为Base64编码的字符串,然后截取指定长度的子字符串,作为生成的随机字符串。如果生成的字符串已经存在,函数将继续生成新的随机字符串,直到生成的字符串不重复为止。
C#
public static string GenerateRandomString(int length)
{
string randomString = string.Empty;
while (string.IsNullOrEmpty(randomString))
{
byte[] randomBytes = new byte[16];
using (var rng = RandomNumberGenerator.Create())
{
rng.GetBytes(randomBytes);
}
randomString = Convert.ToBase64String(randomBytes);
randomString = randomString.Substring(0, length);
if (IsDuplicateString(randomString)) randomString = string.Empty;
}
return randomString;
}
- 编写函数IsDuplicateString用于检查生成的字符串是否已经存在。函数可以使用一个列表来存储已经生成过的字符串。
``` C#
private static readonly List
public static bool IsDuplicateString(string str)
{
if (_existingStrings.Contains(str))
{
return true;
}
else
{
_existingStrings.Add(str);
return false;
}
}
```
至此,我们已经成功地实现了一个C#生成不重复随机字符串类,我们可以通过以下代码来调用这个类。
string randomString = GenerateRandomString(10);
Console.WriteLine("生成随机字符串: " + randomString);
下面是两个示例说明:
- 长度为10的随机字符串
C#
string randomString = GenerateRandomString(10);
Console.WriteLine("生成随机字符串: " + randomString);
输出结果:
生成随机字符串: Uqp6ua5yc5U=
- 长度为20的随机字符串,连续生成5个随机字符串
C#
for(int i = 0; i < 5; i++)
{
string randomString = GenerateRandomString(20);
Console.WriteLine("生成随机字符串: " + randomString);
}
输出结果:
生成随机字符串: SFtVC47z9gM0KOKmJFjH
生成随机字符串: rrit7adxDcSnmEcqedTT
生成随机字符串: iHjPZIm+NCqjp7t8Yqqa
生成随机字符串: 5tMrJVjDnaU7LkVeIwB8
生成随机字符串: ietVxj1H+8L/phACM68g
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#生成不重复随机字符串类 - Python技术站