C#生成不重复随机字符串类

C#生成不重复随机字符串类可以通过以下几个步骤来实现:

  1. 导入命名空间:System.Security.Cryptography和System.Text。

C#
using System.Security.Cryptography;
using System.Text;

  1. 定义一个生成随机字符串的函数,函数可以包括一个参数,指定生成的字符串的长度。函数内部要创建一个随机数生成器对象,并使用该对象生成一个随机数序列。随机数序列可以通过使用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;
}

  1. 编写函数IsDuplicateString用于检查生成的字符串是否已经存在。函数可以使用一个列表来存储已经生成过的字符串。

``` C#
private static readonly List _existingStrings = new 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技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#判断系统是32位还是64位的方法

    C#判断系统是32位还是64位的方法 在C#编程中,有时候需要判断操作系统是32位还是64位。本文将介绍如何在C#中通过代码来判断操作系统的位数,提供两个示例说明。 通过Environment.Is64BitOperatingSystem判断 C#提供了Environment类来访问系统的环境变量和操作系统的信息。其中,Environment.Is64Bit…

    C# 2023年6月7日
    00
  • C#和lua相互调用的方法教程

    下面是关于C#和Lua相互调用的完整攻略。 1. C#调用Lua (1)安装必要的软件 首先需要安装Lua的解释器和C#与Lua相互调用的库,以下是两个比较常用的库: LuaInterface: https://github.com/nlua/lua NLua:https://github.com/NLua/NLua 这里以NLua为例。 (2)在C#中调用…

    C# 2023年5月15日
    00
  • C# NullReferenceException解决案例讲解

    下面是C#NullReferenceException解决案例讲解的完整攻略: 一、什么是NullReferenceException? NullReferenceException 是 .NET Framework 程序中最常出现的异常类型之一。它通常被抛出,当代码尝试使用一个值为null的对象引用,或者尝试对一个空对象进行访问。这个异常在 C# 程序中很…

    C# 2023年5月14日
    00
  • ASP.NET Core使用EF创建模型(包含属性、排除属性、主键和生成值)

    ASP.NET Core 使用 EF 创建模型是一种常见的操作,可以用于定义应用程序中的数据模型。以下是 ASP.NET Core 使用 EF 创建模型的完整攻略: 步骤一:安装 Entity Framework Core 首先,需要安装 Entity Framework Core。可以使用以下命令在 Visual Studio 中安装 Entity Fra…

    C# 2023年5月17日
    00
  • C#中的匿名函数、lambda表达式解读

    C#中的匿名函数、lambda表达式解读 在C#中,匿名函数和lambda表达式提供了更强大、更简洁的代码实现方式,这两个概念通常都是一起出现的。 匿名函数 匿名函数就是没有名字的函数,在C#中可以使用delegate来定义。匿名函数主要有以下两种形式: delegate (parameters) { statements } delegate { stat…

    C# 2023年6月1日
    00
  • C# 创建Excel气泡图的实例代码

    下面是详细的讲解。 1.前言 在使用软件的过程中,Excel无疑是一个非常常用的工具。其中,Excel中的图表功能可以让我们在数据分析的时候更加直观。 很多时候,我们需要通过程序生成Excel中的图表。本篇文章,将介绍如何使用C#代码创建Excel中的气泡图。 2.实现思路 气泡图是一种比较常用的图表形式,通过圆形的大小和位置表现数据,非常能够清晰地展示各个…

    C# 2023年6月3日
    00
  • 在winform下实现左右布局多窗口界面的方法

    在WinForm下实现左右布局多窗口界面的方法 1. 思路 在WinForm下实现左右布局多窗口界面,主要的思路是使用SplitContainer控件。SplitContainer控件可分裂成两个窗格,一个在左侧,一个在右侧,可以用来容纳两个不同的控件,以实现布局。 2. 实现步骤 2.1 创建SplitContainer 在VS中创建WinForm窗口,从…

    C# 2023年6月7日
    00
  • C# 实现Distinct将对象按条件去重

    下面我来具体讲解“C# 实现Distinct将对象按条件去重”的完整攻略。这里我们假设有一组学生对象数据,每个学生对象包含学生的姓名和年龄两个属性,我们需要按照年龄去重,保留年龄较大的学生对象。攻略如下: 1. 定义学生类对象 首先,我们需要定义一个学生类对象,用于存储学生的姓名和年龄信息。 public class Student { public str…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部