.NET Short Unique Identifier

前端 未结 23 971
忘掉有多难
忘掉有多难 2020-12-07 11:27

I need a unique identifier in .NET (cannot use GUID as it is too long for this case).

Do people think that the algorithm used here is a good candidate or do you have

23条回答
  •  醉梦人生
    2020-12-07 11:57

    If your app dont have a few MILLIION people, using that generate short unique string at the SAME MILLISECOND, you can think about using below function.

    private static readonly Object obj = new Object();
    private static readonly Random random = new Random();
    private string CreateShortUniqueString()
    {
        string strDate = DateTime.Now.ToString("yyyyMMddhhmmssfff");
        string randomString ;
        lock (obj)
        {
            randomString = RandomString(3);
        }
        return strDate + randomString; // 16 charater
    }
    private string RandomString(int length)
    {
    
        const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxy";
        var random = new Random();
        return new string(Enumerable.Repeat(chars, length)
          .Select(s => s[random.Next(s.Length)]).ToArray());
    }
    

    change yyyy to yy if you just need to use your app in next 99 year.
    Update 20160511: Correct Random function
    - Add Lock object
    - Move random variable out of RandomString function
    Ref

提交回复
热议问题