在C#开发中,GUID(全局唯一标识符)是常用的唯一标识生成方案,默认生成的GUID格式为32位十六进制字符加连字符的形式,实际开发中可以根据需求生成不同格式的GUID,下面介绍四种常用的生成方法。

一、使用Guid.NewGuid()生成默认格式GUID
这是最基础的GUID生成方式,直接调用Guid结构体的静态方法NewGuid,生成的GUID默认格式为32位数字加4个连字符,共36个字符,符合RFC 4122标准的版本4 UUID格式。
using System;
class Program
{
static void Main()
{
// 生成默认格式的GUID
Guid defaultGuid = Guid.NewGuid();
Console.WriteLine("默认格式GUID: " + defaultGuid.ToString());
// 输出示例:e8f3a2c1-4d5b-4f7a-8c9d-0e1f2a3b4c5d
}
}二、生成无连字符的32位纯数字格式GUID
如果不需要连字符,只想要32位连续的十六进制字符,可以调用ToString方法并传入参数"N",这种格式适合对字符串长度有严格要求,或者不需要分隔符的场景。
using System;
class Program
{
static void Main()
{
Guid guid = Guid.NewGuid();
// 生成无连字符的32位格式
string noHyphenGuid = guid.ToString("N");
Console.WriteLine("无连字符格式GUID: " + noHyphenGuid);
// 输出示例:e8f3a2c14d5b4f7a8c9d0e1f2a3b4c5d
}
}三、生成带连字符的32位格式GUID
如果需要显式指定带连字符的格式,可以传入参数"D",这种格式和默认的ToString()输出一致,不过通过参数指定可以让代码意图更清晰,方便后续维护。
using System;
class Program
{
static void Main()
{
Guid guid = Guid.NewGuid();
// 生成带连字符的32位格式
string withHyphenGuid = guid.ToString("D");
Console.WriteLine("带连字符格式GUID: " + withHyphenGuid);
// 输出示例:e8f3a2c1-4d5b-4f7a-8c9d-0e1f2a3b4c5d
}
}四、生成带大括号的带连字符格式GUID
部分场景(比如注册表项、特定配置文件)需要GUID被大括号包裹,此时可以传入参数"B",生成的格式会在带连字符的GUID前后加上大括号,符合这类场景的格式要求。
using System;
class Program
{
static void Main()
{
Guid guid = Guid.NewGuid();
// 生成带大括号的带连字符格式
string withBraceGuid = guid.ToString("B");
Console.WriteLine("带大括号格式GUID: " + withBraceGuid);
// 输出示例:{e8f3a2c1-4d5b-4f7a-8c9d-0e1f2a3b4c5d}
}
}四种格式对比
下面是四种GUID生成格式的参数和输出特点对比,方便开发者根据场景选择:
| 格式参数 | 输出格式 | 字符长度 | 适用场景 |
|---|---|---|---|
| N | 32位连续十六进制字符 | 32 | 无分隔符要求、长度敏感场景 |
| D | 8-4-4-4-12分段带连字符 | 36 | 通用默认场景、数据库主键 |
| B | 带大括号的D格式 | 38 | 注册表、特定配置文件 |
| 无参数 | 同D格式 | 36 | 快速生成默认GUID |
实际开发中可以根据具体需求选择合适的GUID生成格式,大部分通用场景使用默认的Guid.NewGuid().ToString()即可满足需求,特殊格式场景再选择对应的参数生成即可。