.NET 帮助

C# 新 GUID(如何为开发人员工作)

Chipego
奇佩戈-卡琳达
2024年十月23日
分享:

在 Guid 类中,NewGuid() 方法 通常用于创建全局唯一标识符 (GUID)。 GUID 是一个 128 位整数,可在所有计算机和网络中使用,用于唯一标识信息而不会有重复的风险。 本文将提供关于如何在C#中使用GUID(Globally Unique IDentifiers)的深入指南,重点讲解其实用用途、示例和代码片段。 我们也将探索IronPDF 库

什么是 GUID?

GUID(全局唯一标识符)是软件开发中使用的唯一标识符。 在 .NET Framework 中,GUID 在 System 名称空间中表示为一个 Guid 结构。 GUID 通常用作数据库中的主键,也可用于其他系统中的其他用途,因为在这些系统中需要跨系统的唯一标识符。

在 C# 中生成 GUID;

要在C#中生成新的GUID,使用Guid.NewGuid()函数。 该方法可创建 GUID 对象的新实例,并确保生成的每个 GUID 都是唯一的。 内部使用随机数生成器生成 GUID,以确保没有两个 GUID 具有相同的值。

下面是一个生成新 GUID 的简单代码示例:

using System;
class Program
{
    static void Main()
    {
        Guid newGuid = Guid.NewGuid();
        Console.WriteLine(newGuid);
    }
}
using System;
class Program
{
    static void Main()
    {
        Guid newGuid = Guid.NewGuid();
        Console.WriteLine(newGuid);
    }
}
Imports System
Friend Class Program
	Shared Sub Main()
		Dim newGuid As Guid = Guid.NewGuid()
		Console.WriteLine(newGuid)
	End Sub
End Class
$vbLabelText   $csharpLabel

在此代码中,Guid.NewGuid() 方法使用内部的随机数生成器创建一个新的 GUID,而 Console.WriteLine 则将新生成的 GUID 输出到控制台。

GUID 结构和格式

GUID由32个十六进制数字组成,通常以8-4-4-4-12的格式显示(例如,e02fd0e4-00fd-090A-ca30-0d00a0038ba0)。 当使用 ToString() 方法转换为字符串时,GUID 将以这种格式表示。 这种表示法可以方便地将 GUID 存储在 JSON、XML 或数据库等基于文本的格式中。

下面的代码示例展示了如何将 GUID 转换为字符串:

Guid newGuid = Guid.NewGuid();
string guidString = newGuid.ToString();
Console.WriteLine(guidString);
Guid newGuid = Guid.NewGuid();
string guidString = newGuid.ToString();
Console.WriteLine(guidString);
Dim newGuid As Guid = Guid.NewGuid()
Dim guidString As String = newGuid.ToString()
Console.WriteLine(guidString)
$vbLabelText   $csharpLabel

该代码将 GUID 转换为字符串并输出。

解析 GUID 字符串

有时,您可能需要将字符串解析回 GUID 对象。 这是通过使用Guid.Parse()方法完成的。 如果字符串格式正确,它将被解析为 GUID 实例。 如果格式不正确,将会出现异常。

下面是一个代码示例:

string guidString = "e02fd0e4-00fd-090A-ca30-0d00a0038ba0";
Guid parsedGuid = Guid.Parse(guidString);
Console.WriteLine(parsedGuid);
string guidString = "e02fd0e4-00fd-090A-ca30-0d00a0038ba0";
Guid parsedGuid = Guid.Parse(guidString);
Console.WriteLine(parsedGuid);
Dim guidString As String = "e02fd0e4-00fd-090A-ca30-0d00a0038ba0"
Dim parsedGuid As Guid = Guid.Parse(guidString)
Console.WriteLine(parsedGuid)
$vbLabelText   $csharpLabel

在此代码中,Guid.Parse() 方法将字符串转换回 GUID 对象。

比较两个 GUID

可以比较 GUID 是否相等。 Guid 结构实现了相等运算符 (==),因此您可以直接比较两个 GUID 对象。

下面是一个例子:

Guid guid1 = Guid.NewGuid();
Guid guid2 = Guid.NewGuid();
if (guid1 == guid2)
{
    Console.WriteLine("The two GUIDs are the same.");
}
else
{
    Console.WriteLine("The two GUIDs are different.");
}
Guid guid1 = Guid.NewGuid();
Guid guid2 = Guid.NewGuid();
if (guid1 == guid2)
{
    Console.WriteLine("The two GUIDs are the same.");
}
else
{
    Console.WriteLine("The two GUIDs are different.");
}
Dim guid1 As Guid = Guid.NewGuid()
Dim guid2 As Guid = Guid.NewGuid()
If guid1 = guid2 Then
	Console.WriteLine("The two GUIDs are the same.")
Else
	Console.WriteLine("The two GUIDs are different.")
End If
$vbLabelText   $csharpLabel

在这段代码中,对两个 GUID 进行了比较。 由于 Guid.NewGuid() 生成的每个 GUID 都是唯一的,因此结果通常是“这两个 GUID 是不同的。”

使用 GUID 时的常见错误

  1. 假设GUID是顺序的:GUID是随机的,NewGuid()方法不会生成顺序值。 因此,您不应认为 GUID 会保持任何顺序。

  2. 使用字符串比较而非 GUID 比较:将 GUID 作为字符串进行比较可能效率低下。 始终直接比较 GUID 对象,而不是将其转换为字符串并比较字符串值。

  3. 在大型数据库中使用GUID而不进行索引: GUID可能很大,如果未正确索引,可能会影响大型数据库的性能。 在将 GUID 列用作主键时,确保对其进行索引。

.NET Core 和 Framework 中的 GUIDs

.NET Framework 和 .NET Core 均支持 GUID。 在 .NET 平台的不同版本中,Guid 类的用法保持一致。 因此,使用任何版本.NET的开发人员都可以使用Guid.NewGuid()方法轻松生成GUID。

GUID 与 UUID

GUID类似于UUID(全局唯一标识符),这两个术语常常可以互换使用。 虽然规范中存在一些细微差别,但它们的目的都是为了生成唯一标识符。

通过 GUID 使用 IronPDF

C# 新GUID(如何为开发人员工作):图1 - IronPDF

IronPDF 是一个 PDF 库,用于从 HTML 生成 PDF及在 .NET 应用程序中进行其他 PDF 操作。 当您需要为 PDF 文档生成唯一文件名时,可以将 IronPdf 与 GUIDs 结合使用。 这样可以确保生成的每个 PDF 都有唯一的名称,防止文件覆盖或命名冲突。 下面是一个使用 IronPDF 的简单示例,其中包含一个新的 GUID:

using System;
using IronPdf;
class Program
{
    static void Main()
    {
        // Generate a new GUID object for the PDF filename
        Guid pdfId = Guid.NewGuid();
        string filename = $"{pdfId}.pdf";
        // Create a PDF document using IronPDF
        var renderer = new ChromePdfRenderer();
        var pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
        // Save the PDF with the unique filename
        pdfDocument.SaveAs(filename);
        Console.WriteLine($"PDF saved as: {filename}");
    }
}
using System;
using IronPdf;
class Program
{
    static void Main()
    {
        // Generate a new GUID object for the PDF filename
        Guid pdfId = Guid.NewGuid();
        string filename = $"{pdfId}.pdf";
        // Create a PDF document using IronPDF
        var renderer = new ChromePdfRenderer();
        var pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>");
        // Save the PDF with the unique filename
        pdfDocument.SaveAs(filename);
        Console.WriteLine($"PDF saved as: {filename}");
    }
}
Imports System
Imports IronPdf
Friend Class Program
	Shared Sub Main()
		' Generate a new GUID object for the PDF filename
		Dim pdfId As Guid = Guid.NewGuid()
		Dim filename As String = $"{pdfId}.pdf"
		' Create a PDF document using IronPDF
		Dim renderer = New ChromePdfRenderer()
		Dim pdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello, World!</h1>")
		' Save the PDF with the unique filename
		pdfDocument.SaveAs(filename)
		Console.WriteLine($"PDF saved as: {filename}")
	End Sub
End Class
$vbLabelText   $csharpLabel

在 Visual Studio 中运行上述代码并观察输出结果。

C# 新的 GUID(它对开发者的作用):图 2 - Visual Studio 控制台输出

我们使用 Guid.NewGuid() 为每个 PDF 文件创建一个唯一的随机 GUID。此 GUID 被转换为字符串并用作文件名。

结论

C# 新 GUID(开发者如何使用):图 3 - 许可

在本文中,我们介绍了 C# 中 GUID 的基础知识。 您已经了解了如何生成新的 GUID、比较它们、从字符串中解析它们以及在数据库等实际场景中使用它们。 Guid.NewGuid() 方法使生成新的 GUID 实例变得容易,确保每个标识符在系统之间都是唯一的。 使用 .NET 的开发人员可以依靠 GUID 为其应用程序提供随机性和唯一性。

IronPDF 理解在投资前进行测试的重要性,这就是为什么我们提供免费试用。 您可以免费评估该软件的性能。如果您认为它有益,许可证的起价为$749。

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
C# 歧义联盟(如何为开发人员工作)
下一步 >
C# 索引器(如何为开发人员工作)