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# 使用modbus 读取PLC 寄存器地址的方法

    C#是一种强类型编程语言,用于开发.NET框架下的应用程序。 Modbus是一种在工业自动化领域广泛使用的通讯协议,用于在PLC和其他设备之间进行通信。在本篇文章中,我们将详细讲解C#使用Modbus读取PLC寄存器地址的方法。 准备工作 在开始之前,必须做以下准备工作: 安装.Net框架; 准备好一个Modbus通讯的PLC设备; 下载和安装一个支持Mod…

    C# 2023年5月15日
    00
  • [翻译]ExecutionContext vs SynchronizationContext

    我最近几次被问到关于 ExecutionContext 和 SynchronizationContext 的各种问题,例如它们之间的区别是什么,“传播(Flow)”它们意味着什么,以及它们与 C# 和 Visual Basic 中新的 async/await 关键字的关系。我想我会尝试在这里解决其中的一些问题。 警告:这篇文章深入到 .NET 的一个高级领域…

    C# 2023年4月18日
    00
  • ASP 三层架构 Error处理类

    ASP三层架构是一种常用的Web应用开发模式,它把应用程序划分为展示层、业务逻辑层和数据访问层三层,使得应用程序具有更好的可维护性和可扩展性。为了更好地处理异常情况,我们可以采用Error处理类来优化应用程序。 以下是ASP三层架构 Error处理类的完整攻略: 理解三层架构 ASP三层架构包含三个层次,即展示层、业务逻辑层和数据访问层。展示层负责界面显示和…

    C# 2023年6月6日
    00
  • ASP.NET Core MVC中Tag Helpers用法介绍

    ASP.NET Core MVC 中 Tag Helpers 用法介绍攻略 Tag Helpers 是 ASP.NET Core MVC 中的一个重要特性,它们可以帮助我们更轻松地创建 HTML 标记,并将 C# 代码与 HTML 标记混合在一起。在本攻略中,我们将介绍 ASP.NET Core MVC 中 Tag Helpers 的用法,包括如何创建自定义…

    C# 2023年5月17日
    00
  • 在C#中如何使用Dapper详解(译)

    以下是关于“在C#中如何使用 Dapper”的详细攻略: 1. 什么是 Dapper? Dapper 是一个简单、轻量级的 .NET ORM 框架,与其他相似的框架相比,它的性能更高、更稳定,支持多种数据库,包括 SQL Server、MySQL、PostgreSQL 等。 2. 如何使用 Dapper? 首先,我们需要安装 Dapper,可以通过 NuGe…

    C# 2023年5月31日
    00
  • c# 类型转换

    下面是关于”c#类型转换”的完整攻略。 什么是类型转换? C#的类型转换是将一种数据类型的变量转换为另一种数据类型的变量。在C#中,类型转换有两种形式:隐式转换和显式转换。 隐式转换(Implicit Cast):是从小的数据类型向大的数据类型转换的,不需要进行任何特殊处理。C#程序员无需编写任何代码来实现隐式类型转换,开发环境会自动帮助我们实现。 显式转换…

    C# 2023年5月31日
    00
  • 详解C#对路径…的访问被拒绝解决过程

    下面是详解C#对路径访问被拒绝的完整攻略: 1. 问题描述 在进行C#开发时,经常会使用到文件系统的操作,如创建、读取、删除等。在进行这些操作的过程中,有时会遇到“访问被拒绝”的错误提示,如下所示: System.UnauthorizedAccessException: 访问被拒绝。 在 System.IO.__Error.WinIOError(Int32 …

    C# 2023年5月31日
    00
  • C#生成比较短的Token字符串

    当我们开发Web应用程序的时候,经常需要使用Token字符串来保证数据安全性,如身份验证、跨域访问等。但是由于Token字符串的长度比较长,可能会占用过多的空间和带宽资源,因此我们需要生成比较短的Token字符串。下面我给出一些实现方法和示例。 方法一:使用C#中的Base64编码 Base64编码是一种常用的编码方式,可以将任意二进制数据编码成只包含64个…

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