我的同事和我正在讨论使用哪些方法来自动生成用户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)
我们都知道这Guid.NewGuid()可以满足我们的需求,但我宁愿使用自定义方法.它做同样的事情,但有更多的控制.
我的同事认为,由于自定义方法已经自己制作,因此更容易产生碰撞.我承认我并不完全了解Random的实现,但我认为它与Guid.NewGuid()一样随机.自定义方法的典型用法可能是:
RandomStringGenerator …Run Code Online (Sandbox Code Playgroud)