Guid (NewGuid, CreateVersion7) în C# (.NET)

.NET BCL și CLI-ul dotnet .NET Framework 1.0 (CreateVersion7: .NET 9)

Identificator unic de 128 de biți: generare cu NewGuid sau CreateVersion7 (ordonat în timp), citire, formatare și comparare.

Sintaxă C#
Guid id = Guid.NewGuid();   Guid v7 = Guid.CreateVersion7();   Guid.TryParse(text, out Guid g)

Ce face Guid (NewGuid, CreateVersion7)

Un Guid (sau UUID) este un identificator de 128 de biți, scris de obicei ca 32 de cifre hexazecimale cu cratime. Probabilitatea ca două valori generate să coincidă este neglijabilă, așa că se pot crea ID-uri unice fără să întrebi baza de date.

Guid.NewGuid() creează un UUID versiunea 4, complet aleatoriu. Guid.CreateVersion7() (.NET 9) creează un UUID versiunea 7, care începe cu momentul creării: valorile noi sunt ordonate crescător, ceea ce face indexurile din baza de date mai eficiente decât cu versiunea 4. Proprietatea Version (.NET 9) arată versiunea.

ToString() acceptă formatele "D" (implicit, cu cratime), "N" (fără cratime), "B" (între acolade). Compararea cu == nu ține cont de litere mari sau mici din textul de la care a pornit.

Exemple

Exemplul 1: Generare și formate

Guid id = Guid.NewGuid();
Console.WriteLine(id);
Console.WriteLine(id.ToString("N"));
Console.WriteLine(id.Version);

Guid comanda = Guid.CreateVersion7();
Console.WriteLine(comanda);
Console.WriteLine(comanda.Version);

Rezultat posibil (diferă la fiecare rulare)

c1a7f0e2-5b3d-4e8a-9f61-2d4b7c90a3e5
c1a7f0e25b3d4e8a9f612d4b7c90a3e5
4
01a172ee-9a4b-7f40-8a12-5c6d7e8f9a0b
7

Exemplul 2: Citire, validare și comparare

var a = Guid.Parse("3f2504e0-4f89-11d3-9a0c-0305e82c3301");
var b = Guid.Parse("3F2504E0-4F89-11D3-9A0C-0305E82C3301");

Console.WriteLine(a == b);
Console.WriteLine(a.ToString("B"));
Console.WriteLine(Guid.TryParse("nu-e-guid", out _));
Console.WriteLine(Guid.Empty);

Rezultat

True
{3f2504e0-4f89-11d3-9a0c-0305e82c3301}
False
00000000-0000-0000-0000-000000000000

Greșeli frecvente

  • new Guid() nu generează un ID nou: este Guid.Empty (numai zerouri). Folosește Guid.NewGuid().
  • GUID-urile nu sunt secrete: v4 este aleatoriu, dar nu e garantat criptografic, iar v7 conține momentul creării. Nu le folosi ca tokenuri de securitate.
  • Guid.Parse pe text de la utilizator aruncă FormatException; folosește TryParse.

Comenzi înrudite