
GUID(Globally Unique Identifier,全局唯一标识符)是一种 128 位的数字,用于标识全局范围内唯一的对象。常用于数据库表中的主键、分布式系统中的唯一标识符、软件组件的标识等场景。
在 C# 中,System.Guid 类提供了对 GUID 的生成和操作支持。GUID 的主要特点包括:
.NET 9 引入了基于时间戳和随机值的 Guid 版本 7(Guid V7),使其更适合关系型数据库。Guid V7 的值是顺序的,减少了数据库索引的碎片化,从而提高了性能。
Guid guid7 = Guid.CreateVersion7();
Console.WriteLine(guid7);Guid.NewGuid()Guid.NewGuid() 是生成 GUID 的最常用方法:
using System;
Guid guid = Guid.NewGuid();
Console.WriteLine("生成的 GUID: " + guid);
// 示例输出: 3F2504E0-4F89-11D3-9A0C-0305E82C3301可以通过 Guid.Parse 或 Guid.TryParse 将字符串转换为 GUID:
string guidString = "123e4567-e89b-12d3-a456-426614174000";
Guid guid = Guid.Parse(guidString);
Console.WriteLine(guid.ToString());byte[] bytes = new byte[];
Random random = new Random();
random.NextBytes(bytes);
Guid guid = new Guid(bytes);
Console.WriteLine(guid.ToString());GUID 支持多种格式化输出方式,可以通过 ToString 方法指定格式:
格式化选项 | 描述 | 示例输出 |
|---|---|---|
D | 默认格式,带连字符的 32 个字符 | f368a3ad-d7df-4655-a41a-e610a6c7ae83 |
N | 不带连字符的 32 个字符 | f368a3add7df4655a41ae610a6c7ae83 |
B | 被大括号包围的 GUID | {f368a3ad-d7df-4655-a41a-e610a6c7ae83} |
P | 被圆括号包围的 GUID | (f368a3ad-d7df-4655-a41a-e610a6c7ae83) |
X | 十六进制格式,带大括号和逗号分隔 | {0xf368a3ad,0xd7df,0x4655,{0xa4,0x1a,...}} |
Guid guid = Guid.NewGuid();
Console.WriteLine("Default (D): " + guid.ToString("D"));
Console.WriteLine("No Dashes (N): " + guid.ToString("N"));
Console.WriteLine("Braces (B): " + guid.ToString("B"));
Console.WriteLine("Parentheses (P): " + guid.ToString("P"));
Console.WriteLine("Uppercase Hex (X): " + guid.ToString("X"));运行结果:
Default (D): f368a3ad-d7df-4655-a41a-e610a6c7ae83
No Dashes (N): f368a3add7df4655a41ae610a6c7ae83
Braces (B): {f368a3ad-d7df-4655-a41a-e610a6c7ae83}
Parentheses (P): (f368a3ad-d7df-4655-a41a-e610a6c7ae83)
Uppercase Hex (X): {0xf368a3ad,0xd7df,0x4655,{0xa4,0x1a,...}}Guid.Empty 表示全零的 GUID:
Console.WriteLine(Guid.Empty);
// 输出: 00000000-0000-0000-0000-000000000000Guid V7 是 .NET 9 引入的新特性,解决了传统 GUID 的一些局限性:
默认创建: 它默认使用当前 UTC 时间
Guid guid7 = Guid.CreateVersion7();
Console.WriteLine("Guid V7: " + guid7);
//Guid V7: 0196321a-07a3-74b6-b7d1-516a9d5dc247指定时间戳创建:
DateTimeOffset timestamp = DateTimeOffset.UtcNow;
Guid guid7WithTimestamp = Guid.CreateVersion7(timestamp);
Console.WriteLine(guid7WithTimestamp);
//01963219-b06e-7230-a9f6-2eba45fa94efGUID 是一种强大的工具,用于生成全局唯一标识符。在 C# 中,System.Guid 类提供了简单易用的接口来生成和格式化 GUID。随着 .NET 9 引入 Guid V7,GUID 的性能和适用性得到了进一步提升。