0

私はこの記事から取った機能を持っています。

private string GenerateTransactionCode()
{
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    var random = new Random();
    var result = new string(
        Enumerable.Repeat(chars, 8)
                  .Select(s => s[random.Next(s.Length)])
                  .ToArray());
    return result;
}

ランダムではなく、に基づいて英数字を選択するように変更したいと思いますDateTime.UtcNow.Ticks。こうすれば繰り返さなくなります。ミリ秒の長さに応じて、結果の TransactionCode の文字を増やす必要があると思いますか? 結果の TransactionCode の長さを一定にしたいと思います。うまくいけば、8文字以下です。

:ティックがたまたま135(実際の生活ではそれ以上になる)場合、結果のコードは0ベースかどうかに応じてACEまたはになりますBDF(そうかどうかは気にしません)。

4

1 に答える 1

3

あなたが実際に望んでいるのは、実際の非反復トランザクション コード、またはGUIDだと思います。

Guid g = Guid.NewGuid();
string txcode = Convert.ToBase64String(g.ToByteArray());

クリーンアップしたい場合:

txcode = txcode.Replace("=","").Replace("+","").Replace("/","");

生成された出力の例は次のとおりですが、とOEndimZwsEKRAbAwnvzjoAの置き換えのため、長さが少し予測不能になる可能性があります。+ /=

32 文字の長さであることが保証されているこの形式g.ToString("N")を好むかもしれません。58d5381c878b484591568b086296fe8e

于 2012-04-24T13:42:58.320 に答える