C# Guid生成唯一值用例

发布时间:2024年01月12日

GUID(全局唯一标识符)是一个128位的数字,通常用来唯一标识信息。GUID 的生成算法保证了在相同的时空条件下,基本上不会生成重复的值。这是因为GUID的生成算法结合了多种不同的信息,包括时间戳、计算机的 MAC 地址、随机数等,从而大大降低了生成重复值的可能性。

具体来说,通常情况下,GUID 包含了以下信息:

  1. 时间戳:生成 GUID 的时候会包含当前的时间信息,精确到毫秒,这保证了在同一台计算机上生成的 GUID 在不同时间点是不同的。
  2. MAC 地址:通常会包含生成时计算机的 MAC 地址,这确保了在不同计算机上生成的 GUID 是不同的。
  3. 随机数:GUID 中也包含了一个随机生成的部分,确保了即使在相同时间点和相同计算机上也不会生成重复的值。

综合上述因素,GUID 的生成算法确保了在现实应用中,生成重复值的可能性极低,接近于零。当然,并不是绝对不会出现重复值,这种情况的概率极小,但是并不是完全不可能。

因此,通过合理设计的生成算法,GUID 能够在大多数情况下确保唯一性,这也使得它成为在分布式系统中用来唯一标识信息的一种常见选择。


用例

using System;

public class MyClass
{
    public Guid UniqueId { get; }

    public MyClass()
    {
        UniqueId = Guid.NewGuid();
    }
}

class Program
{
    static void Main()
    {
        MyClass obj1 = new MyClass();
        MyClass obj2 = new MyClass();

        Console.WriteLine("obj1 UniqueId: " + obj1.UniqueId);
        Console.WriteLine("obj2 UniqueId: " + obj2.UniqueId);
    }
}

Tips

Guid 结构体的未初始化时,默认值是 Guid.Empty,这个属性表示一个空的 Guid,其值为全零(即所有位都为零)

using System;

class Program
{
    static void Main()
    {
        Guid uninitializedGuid;

        Console.WriteLine("未初始化的 Guid 值为:" + uninitializedGuid);
        Console.WriteLine("是否为默认值 Guid.Empty: " + (uninitializedGuid == Guid.Empty));
    }
}
文章来源:https://blog.csdn.net/weixin_44291381/article/details/135547664
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。