相关疑难解决方法(0)

Guid.NewGuid()VS来自Random.Next()的随机字符串生成器

我的同事和我正在讨论使用哪些方法来自动生成用户ID和发布ID以便在数据库中进行识别:

一个选项使用Random的单个实例,并采用一些有用的参数,因此它可以重用于各种string-gen案例(即从4位数字引脚到20位字母数字id).这是代码:

// This is created once for the lifetime of the server instance
class RandomStringGenerator
{
    public const string ALPHANUMERIC_CAPS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
    public const string ALPHA_CAPS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    public const string NUMERIC = "1234567890";

    Random rand = new Random();
    public string GetRandomString(int length, params char[] chars)
    {
        string s = "";
        for (int i = 0; i < length; i++)
            s += chars[rand.Next() % chars.Length];

        return s;
    }
}
Run Code Online (Sandbox Code Playgroud)

另一种选择就是使用:

Guid.NewGuid();
Run Code Online (Sandbox Code Playgroud)

在MSDN上看到Guid.NewGuid

我们都知道这Guid.NewGuid()可以满足我们的需求,但我宁愿使用自定义方法.它做同样的事情,但有更多的控制.

我的同事认为,由于自定义方法已经自己制作,因此更容易产生碰撞.我承认我并不完全了解Random的实现,但我认为它与Guid.NewGuid()一样随机.自定义方法的典型用法可能是:

RandomStringGenerator …
Run Code Online (Sandbox Code Playgroud)

c# random guid

25
推荐指数
2
解决办法
3万
查看次数

标签 统计

c# ×1

guid ×1

random ×1