C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# Guid使用

C#中Guid类使用小结

作者:鲤籽鲲

本文主要介绍了C#中Guid类用于生成和操作 128 位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下

前言

C# 中的 Guid 类(全局唯一标识符,Globally Unique Identifier)用于生成和操作 128 位的唯一标识符。它在需要唯一标识的场景(如数据库主键、分布式系统等)中广泛使用。

一、什么是 Guid

Guid(Globally Unique Identifier,全局唯一标识符)是一种由 128 位(16 字节)组成的唯一标识符。

Guid 的主要用途是为对象、数据库记录等提供一个在全局范围内唯一的标识,避免因重复而导致的冲突问题。

二、生成 Guid

在 C# 中,可以使用 System.Guid 类来生成 Guid。

1. 使用 Guid.NewGuid() 方法

这是最常用的方式,用于生成一个新的随机 Guid。

Guid newGuid = Guid.NewGuid();
Console.WriteLine(newGuid.ToString());

每次调用 Guid.NewGuid() 方法都会生成一个不同的 Guid,它通过复杂的算法确保生成的 Guid 在全球范围内具有极高的唯一性。

2. 从字符串创建 Guid

如果已经有一个符合 Guid 格式的字符串,可以通过 Guid.Parse 或 Guid.TryParse 方法将其转换为 Guid 对象。

string guidString = "123e4567-e89b-12d3-a456-426614174000";
Guid guid = Guid.Parse(guidString);
Console.WriteLine(guid.ToString());

Guid.Parse 方法在字符串格式不正确时会抛出异常,而 Guid.TryParse 方法则会返回一个布尔值,表示转换是否成功,避免异常的发生。

string guidString = "123e4567-e89b-12d3-a456-426614174000";
Guid guid;
if (Guid.TryParse(guidString, out guid))
{
	  Console.WriteLine(guid.ToString());
}
else
{
	  Console.WriteLine("Invalid GUID format.");
}

3. 从构造函数

        byte[] bytes = new byte[16];
        
        // 使用随机数填充字节数组
        Random random = new Random();
        random.NextBytes(bytes);
        
        Guid guid = new Guid(bytes);
        Console.WriteLine(guid.ToString());

实例化

	 Guid guid = new Guid("123e4567-e89b-12d3-a456-426614174000");
	 Console.WriteLine(guid.ToString());

三、Guid 的属性和方法

1. 全零 Guid

Guid.Empty : 表示全零的 Guid(00000000-0000-0000-0000-000000000000)。

2. Guid.ToString() 格式化

Guid 提供了多种格式化选项,可以通过 ToString 方法并指定格式化字符串来控制输出格式。

	Guid guid = Guid.NewGuid();
	Console.WriteLine(guid.ToString("N")); // 输出类似:3dfdb9e3b8a7445c8634268e71345b9e
	Console.WriteLine(guid.ToString("D")); // 输出类似:3dfdb9e3-b8a7-445c-8634-268e71345b9e
	Console.WriteLine(guid.ToString("B")); // 输出类似:{3dfdb9e3-b8a7-445c-8634-268e71345b9e}
	Console.WriteLine(guid.ToString("P")); // 输出类似:(3dfdb9e3-b8a7-445c-8634-268e71345b9e)
	Console.WriteLine(guid.ToString("X")); // 输出类似:{0x3dfdb9e3,0xb8a7,0x445c,{0x86,0x34,0x26,0x8e,0x71,0x34,0x5b,0x9e}}

3. Guid 的比较

Guid 类提供了多种比较方法,用于比较两个 Guid 是否相等。

	Guid guid1 = Guid.NewGuid();
	Guid guid2 = guid1;
	bool isEqual = guid1.Equals(guid2);
	Console.WriteLine(isEqual); // 输出:True
	bool isEqual = guid1 == guid2;
	bool isNotEqual = guid1 != guid2;
	Console.WriteLine(isEqual); // 输出:True
	Console.WriteLine(isNotEqual); // 输出:False
	int comparisonResult = guid1.CompareTo(guid2);
	if (comparisonResult == 0)
	{
	    Console.WriteLine("Guids are equal.");
	}
	else if (comparisonResult < 0)
	{
	    Console.WriteLine("Guid1 is less than Guid2.");
	}
	else
	{
	    Console.WriteLine("Guid1 is greater than Guid2.");
	}

四、Guid 的存储和传输

由于 Guid 是 128 位的结构,因此在存储和传输时需要考虑其大小和性能。

1. 数据库存储

在数据库中,Guid 通常以 uniqueidentifier 类型存储(在 SQL Server 中)。在实体框架(Entity Framework)中,可以将实体的主键设置为 Guid 类型。

public class MyEntity
{
    public Guid Id { get; set; }
    // 其他属性
}

2. 网络传输

在通过网络传输 Guid 时,通常将其转换为字符串格式,以方便传输和解析。

string guidString = guid.ToString();
// 传输 guidString

在接收端,可以使用 Guid.Parse 或 Guid.TryParse 方法将其转换回 Guid 对象。

五、使用场景与注意事项

1. 使用场景

2. 注意事项

七、总结

Guid 是一种非常有用的唯一标识符,在 C# 中可以通过多种方式生成、格式化和比较。它在数据库主键、对象标识、分布式系统中具有广泛的应用。然而,在使用 Guid 时也需要考虑其性能和存储空间的开销,合理选择使用场景。

到此这篇关于C#中Guid类使用小结的文章就介绍到这了,更多相关C# Guid使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文