使用RNGCryptoServiceProvider类创建唯一的最多8位数字符串,再在前面拼接上年月日时分秒产生的字符串,最大限度的保证生成的字符串是唯一的。
大家也可以根据自己的需求修改,日期可以取值到毫秒,这样更能保证生成的字符串是唯一的。
private static string GetUniqueKey()
{
int maxSize = 8;
int minSize = 5;
char [] chars = new char [62];
string a;
a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" ;
chars = a.ToCharArray();
int size = maxSize;
byte [] data = new byte [1];
RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider();
crypto.GetNonZeroBytes(data);
size = maxSize;
data = new byte [size];
crypto.GetNonZeroBytes(data);
StringBuilder result = new StringBuilder(size);
foreach ( byte b in data)
{
result.Append(chars[b % (chars.Length - 1)]);
}
return result.ToString();
}
然后调用方法,如下做了演示,每次产生的结果都不一样
for ( int i = 0; i < 10; i++)
{
string str = string .Format( "{0}{1}" , DateTime.Now.ToString( "yyyyMMddHHmmss" ), GetUniqueKey());
Console.WriteLine(str);
}
Console.ReadKey();
dy("nrwz");
查看更多关于C#利用时间和随即字符串创建唯一的订单编号的详细内容...