Documentation développeur
C#
Mis à jour le 18 septembre 2026

Générer un UUID en C#

Générez, formatez, analysez et validez des UUID et GUID en C# et .NET avec Guid et le support natif UUIDv7 de .NET 9.

En C# et avec le runtime .NET, les UUID sont représentés par la structure System.Guid. Bien que Microsoft ait historiquement utilisé le terme GUID (Globally Unique Identifier), la structure Guid de .NET est conforme à la spécification RFC 4122/9562 et s'avère totalement interopérable avec les UUID générés sous Linux ou JavaScript.

Démarrage rapide#

Générez un UUID v4 standard en C# à l'aide de Guid.NewGuid() :

C#
1using System;23// Génère un UUIDv4 aléatoire4Guid id = Guid.NewGuid();56Console.WriteLine(id.ToString());7// Résultat : "d8f6d2f3-11b2-4cf3-96b6-98dc124e402b"

Support natif d'UUIDv7 dans .NET 9#

Depuis .NET 9, Microsoft intègre la génération native d'UUID v7 ordonnés dans le temps via Guid.CreateVersion7() :

C#
1// Natif dans .NET 9 et versions ultérieures2Guid idOrdonne = Guid.CreateVersion7();34Console.WriteLine(idOrdonne);5// Les 48 premiers bits encodent l'horodatage milliseconde actuel

L'UUID v7 élimine la fragmentation des index SQL (B-Tree splits) dans Entity Framework Core, SQL Server et PostgreSQL.

Formats et Spécificateurs d'export#

La méthode Guid.ToString(string format) prend en charge des spécificateurs normalisés :

C#
1Guid id = Guid.NewGuid();23// "D" : Format canonique RFC 4122/9562 avec tirets (par défaut)4string standard = id.ToString("D");5// "d8f6d2f3-11b2-4cf3-96b6-98dc124e402b"67// "N" : 32 chiffres hexadécimaux sans tirets8string compact = id.ToString("N");9// "d8f6d2f311b24cf396b698dc124e402b"1011// "B" : Avec tirets entouré d'accolades12string accolades = id.ToString("B");13// "{d8f6d2f3-11b2-4cf3-96b6-98dc124e402b}"1415// "P" : Avec tirets entre parenthèses16string parentheses = id.ToString("P");17// "(d8f6d2f3-11b2-4cf3-96b6-98dc124e402b)"

Analyse et Validation avec TryParse#

Préférez Guid.TryParse pour valider une chaîne sans lever d'exceptions coûteuses :

C#
1string chaine = "d8f6d2f3-11b2-4cf3-96b6-98dc124e402b";23if (Guid.TryParse(chaine, out Guid resultat))4{5    Console.WriteLine($"GUID valide : {resultat}");67    if (resultat == Guid.Empty)8    {9        Console.WriteLine("Avertissement : GUID vide / nil reçu");10    }11}12else13{14    Console.WriteLine("Chaîne GUID invalide");15}

Bonnes pratiques#

  1. Privilégiez Guid.TryParse : Évite le coût des exceptions lors du traitement des formulaires web ou requêtes API.
  2. Vérifiez Guid.Empty : Détecte les identifiants non initialisés.
  3. Adoptez Guid.CreateVersion7() sous .NET 9+ : Remplace les solutions personnalisées de GUID séquentiels.

Références#

Implémenter UUID dans d'autres langages :