.NET的GUID结构

Lou*_*hys 1 .net c# algorithm guid probability

http://msdn.microsoft.com/en-us/library/system.guid.aspx

它是如何工作的?它如何保证唯一ID?它只依赖于概率还是还有其他技巧?我是否可以始终相信它可以提供独特的ID或者我应该避免guid的情况?

mpe*_*pen 7

这是一个有趣的小程序:

class Program
{
    static void Main(string[] args)
    {
        var guids = new HashSet<string>();
        var sw = Stopwatch.StartNew();

        while(true)
        {
            var guid = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 16);
            if (guids.Contains(guid)) break;
            guids.Add(guid);
        }

        Console.WriteLine("Duplicate found in {0} ms, after {1} items.", sw.ElapsedMilliseconds, guids.Count);
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

我打赌你会在发现一个骗局之前耗尽内存;)

编辑:即使只使用一半Guid.

  • 不要使用"GUID的一半"http://stackoverflow.com/questions/1801961/using-parts-of-guid-as-id只有GUID作为一个整体被设计为唯一的. (3认同)