.NET ヘルプ

C#新しいGUID(開発者のための仕組み)

Guid クラスの NewGuid() メソッド は、一般的にグローバル一意識別子 (GUID) を作成するために使用されます。 GUIDは128ビットの整数で、すべてのコンピュータとネットワークで使用でき、重複のリスクなしに情報を一意に識別します。 この記事では、C#でGUID(Globally Unique IDentifiers)を扱う方法について、実用的な使用法、例、およびコードスニペットに焦点を当てた詳細なガイドを提供します。 私たちはIronPDFライブラリについても探ります。

GUIDとは何ですか?

GUID(グローバル一意識別子)は、ソフトウェア開発で使用される一意の識別子です。 .NETフレームワークでは、GUIDはSystem名前空間内のGuid構造体として表されます。 GUIDは、データベースのプライマリキーとして、また、システム間で一意な識別子が必要とされる他のシステムで、他の目的でもよく使用されます。

C#でGUIDを生成する;

C#で新しいGUIDを生成するには、Guid.NewGuid()関数を使用します。 このメソッドは、GUIDオブジェクトの新しいインスタンスを作成し、生成された各GUIDが一意であることを保証します。 内部的には、GUIDは乱数発生器を使用して生成され、2つの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の16進数の数字で構成され、通常は8-4-4-4-12の形式で表示されます(例: e02fd0e4-00fd-090A-ca30-0d00a0038ba0)。 ToString() メソッドを使用して文字列に変換されると、GUID はこの形式で表されます。 この表現により、JSON、XML、データベースなどのテキストベースのフォーマットにGUIDを簡単に格納できるようになります。

以下のコード例は、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 オブジェクトに変換します。

2つのGUIDを比較する

GUIDが等しいかどうかを比較することができます。 Guid 構造体は等価演算子 (==) を実装しているため、2 つの 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

このコードでは、2つのGUIDを比較しています。 Guid.NewGuid()によって生成される各GUIDは一意であるため、結果は通常「2つのGUIDは異なります。」となります。

GUIDを使用する際によくある間違い

  1. GUIDが連続していると想定すること:GUIDはランダムであり、NewGuid() メソッドは連続した値を生成しません。 そのため、GUIDが何らかの秩序を保つと仮定すべきではありません。

  2. GUIDの比較ではなく文字列の比較を使用: GUIDを文字列として比較することは、非効率的になる可能性があります。 GUIDオブジェクトを文字列に変換して文字列値を比較するのではなく、常に直接比較してください。

  3. インデックスを使用しない大規模データベースでのGUIDの使用: GUIDは大きくなる可能性があり、適切にインデックスされていない場合、大規模なデータベースのパフォーマンスに影響を与える可能性があります。 GUIDカラムを主キーとして使用する場合は、インデックスが付けられていることを確認してください。

.NET CoreとFrameworkにおけるGUID

GUIDは、.NET Frameworkと.NET Coreの両方でサポートされています。 Guidクラスの使用法は、.NETプラットフォームの異なるバージョン間で一貫しています。 したがって、任意のバージョンの.NETを使用している開発者は、Guid.NewGuid() メソッドを使用して容易にGUIDを生成することができます。

GUIDとUUIDの比較

GUIDはUUID(Universally Unique Identifier、グローバルに一意な識別子)と類似しており、これらの用語はしばしば互換的に使用されます。 仕様には若干の違いがありますが、一意の識別子を生成するという目的は同じです。

GUIDでIronPDFを使う

C# 新しい GUID(開発者向けの動作方法):図 1 - IronPDF

IronPDFは、HTMLおよびその他のPDF操作からPDFを生成するための.NETアプリケーション用PDFライブラリです。 IronPdfとGUIDを組み合わせることで、PDFドキュメントにユニークなファイル名を生成することができます。 これにより、生成されるすべてのPDFが一意の名前を持つようになり、ファイルの上書きや命名の衝突を防ぐことができます。 新しいGUIDでIronPDFを使う簡単な例です:

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コンソール出力

各PDFファイルごとに一意のランダムなGUIDを作成するために、Guid.NewGuid()を使用します。このGUIDは文字列に変換され、ファイル名として使用されます。

結論

C# New GUID(開発者向けの仕組み):図3 - ライセンシング

この記事では、C#におけるGUIDの基本について説明しました。 新しいGUIDの生成方法、比較方法、文字列からの解析方法、データベースのような実用的なシナリオでの使用方法をご覧いただきました。 Guid.NewGuid() メソッドは、新しい GUID インスタンスを簡単に生成し、各識別子がシステム全体でユニークであることを保証します。 .NETで作業している開発者は、アプリケーションにランダム性と一意性を提供するためにGUIDに頼ることができます。

IronPDF は投資する前にテストすることの重要性を理解しているため、無料トライアルを提供しています。 ソフトウェアのパフォーマンスを無料で評価できます。もし有益だと感じた場合、ライセンスは$749から始まります。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
C# Discriminated Union (開発者のための仕組み)
次へ >
C# インデクサー(開発者のための仕組み)